Путь к местоположению nginx с proxy_pass
У меня возникла следующая проблема: я пытаюсь разместить приложение Django с сервером gunicorn на моем VPS под управлением Nginx. Мой конфиг nginx выглядит так:
upstream app_name {
server unix:/path/to/socket/file.sock fail_timeout=10;
}
server {
listen 80 default_server;
listen[::]:80 default_server ipv6only=on;
root /webapps/;
server_name my_hostname.com;
location / {
proxy_set_header Host $http_host;
}
location /appname/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_name;
}
}
Однако, когда я перехожу к my_server.com/appname/
я постоянно получаю 404 ошибку. Я все еще новичок в Nginx, кто-то может указать мне правильное направление, как установить proxy_pass для /appname/
дорожка? Я должен отметить, что когда место для /appname/
заменяется на /
Приложение Django работает нормально.
1 ответ
Решение
Вам просто нужен косая черта для proxy_pass:
proxy_pass http://app_name/;
это поможет вам вырезать префикс "appname", чтобы конфигурация выглядела так:
upstream app_name {
server unix:/path/to/socket/file.sock fail_timeout=10;
}
server {
listen 80 default_server;
listen[::]:80 default_server ipv6only=on;
root /webapps/;
server_name my_hostname.com;
location /appname/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_name/;
}