Создание regex получает для нескольких местоположений.
Древовидная структура:
/home/user/webapps/
├── index.html <= content: root.
├── osqa
│ ├── index.html <= content: osqa test A.
│ ├── osqa <= django project
│ │ ├── index.html <= content: osqa test B.
│ │ └── osqa
│ │ ├── settings.py
│ │ └── wsgi.py
│ ├── run
│ └── static
└── forum
├── index.html <= content: forum test A.
├── forum <= django project
│ ├── index.html <= content: forum test B.
│ └── forum
│ ├── settings.py
│ └── wsgi.py
├── run
└── static
Эта конфигурация nginx работает:
server {
listen 8080;
server_name localhost;
root /home/user/webapps/;
location /osqa/ {
alias /home/user/webapps/osqa/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass h ttp://unix:/home/user/webapps/osqa/run/gunicorn.sock:/;
}
location /forum/ {
alias /home/user/webapps/forum/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass h ttp://unix:/home/user/webapps/forum/run/gunicorn.sock:/;
}
попытка присоединиться к тем местоположениям в один PCRE regex
location ~ webapps\/(?P<app>[\w-_]+) {
alias /home/user/webapps/$app/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass h ttp://unix:/home/user/webapps/$app/run/gunicorn.sock:/;
}
что я получаю:
localhost:8080/osqa/osqa/
returns: osqa test B
localhost:8080/osqa/
returns: 403 Forbidden
localhost:8080
returns: osqa test A
что я ожидал:
localhost:8080/osqa/osqa/
returns: osqa test B
localhost:8080/osqa/
returns: django site
localhost:8080
returns: root
Я читал о пользовательском dir, местоположении, сообщении SF и все еще не могу выяснить, как сделать это.
Что я должен добавить или изменить, где я должен посмотреть? (Я почти вне идей),
Сопоставление выполняется с нормализованным URI, а не с корневым путем.
Итак, это
location ~ webapps\/(?P<app>[\w-_]+) {
Должно быть
location ~ ^\/(?P<app>[\w-_]+) {
и теперь он работает.