Mein Ziel ist es, alles unter http://localhost:8000
in http://localhost/foo
Ich habe jeden in diesem -Link genannten Schritt verfolgt, konnte es aber trotzdem nicht zum Laufen bringen.
Hier sind meine Einstellungen:
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 mit Port 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 mit Port 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;
}
}
Jetzt
http://localhost/test
entspricht http://localhost:8000
aber wenn ich zu http://localhost/test/foo
gehe, sagt mir nginx "nicht gefunden"
(Ich erwarte dasselbe wie http://localhost:8000/foo
)
Was habe ich vermisst?
Es scheint, dass das Problem das zusätzliche $ in der Umschreibungsregel ist (im ersten Argument). Ich habe es entfernt und es hat gut funktioniert.
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;
}