Nginx переписывает определенный порт в подпуть (nginx + uwsgi + django)

Моя цель - переписать все под http: // localhost: 8000 на http: // localhost / foo

Я подписался каждый шаг, упомянутый в этой ссылке , но все равно не может работать.

Вот мои настройки:

urls.py (Django)

urlpatterns = [
    url(r'^$', 'home.view'),
    url(r'^foo$', 'foo.view'),
]

uwsgi.ini (uWSGI)

[uwsgi]

chdir           = /home/user/folder/project
wsgi-file       = /home/user/folder/project/iTrends/wsgi.py
home            = /home/user/.pyenv/versions/project
master          = true
processes       = 10
threads         = 5
socket          = /tmp/project.sock
chmod-socket    = 666
vacuum          = true
logto           = /tmp/project_uwsgi.log
http-websocket  = true
buffer-size     = 65535

nginx80.conf (nginx с портом 80)

server {
    listen       80;
    server_name = _;

    location /test {
        rewrite ^/test/(.*)$ /$1 break;   
        proxy_pass  http://127.0.0.1:8000;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

nginx8000.conf (nginx с портом 8000)

server {
    listen      8000;
    server_name _; 
    charset     utf-8;

    client_max_body_size 75M;

    location /static {
        alias /home/user/folder/project/static_all;
    }

    location / {
        uwsgi_pass  unix:///tmp/project.sock;
        include     /etc/nginx/uwsgi_params;
    }
}

Теперь http: // localhost / test эквивалентно http: // localhost: 8000

, но когда я перехожу на http: // localhost / test / foo , nginx сообщает мне "не найдено"
(Я ожидаю, что это то же самое, что и http: // localhost: 8000 / foo )

Что я пропустил?

2
задан 23 May 2017 в 15:41
1 ответ

Похоже, проблема в лишних $ в правиле перезаписи (в первом аргументе). Я удалил его, и он начал нормально работать.

    location /test {
        rewrite ^/test/(.*) /$1 break;   
        proxy_pass  http://127.0.0.1:8000;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
1
ответ дан 3 December 2019 в 12:40

Теги

Похожие вопросы