感谢您阅读我的问题。
我尝试使用Gunicorn和Nginx在一个没有域(仅IP地址)的服务器上为自己的文件夹上的多个Django站点提供服务。这样的事情:
20.20.20.20/demos/myapp1/ --> Django app
20.20.20.20/demos/myapp2/ --> Django app
20.20.20.20/demos/myapp3/ --> Django app
我测试了很多设置,但我无法使其正常工作。当我试图加载URL 20.20.20.02/demos/myapp1/我得到404未找到错误:(
示例一网站nginx conf:
upstream app1_server {
server unix:/webapps/myapp1/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name 20.20.20.20;
keepalive_timeout 5;
client_max_body_size 4G;
location /static/ {
alias /webapps/myapp1/static/;
}
location /media/ {
alias /webapps/myapp1/media/;
}
location /demos/myapp1/ {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app1_server;
}
# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /webapps/myapp1/static/;
}
}
我的myapp1.conf文件出了什么问题?
为了记录,如果我改变" location / demos / myapp1 /"到"位置/"我的第一个应用程序正常运行,但其他应用程序仍无效。
提前致谢。
修改1:
检查我的问题..现在我找到了一个解决方案。重写规则:
location /myapp1/ {
rewrite ^/myapp1(.*) $1 break;
try_files $uri @proxy_to_app;
}
是一个很好的解决方案吗?我的Django应用程序打破了他们的网址:(
答案 0 :(得分:2)
好了,读到Nginx,我分四步解决了我的问题:
在不同的端口收听每个应用,如下所示:
server {
listen 81;
server_name 20.20.20.20;
location /demos/myapp1/ {
rewrite ^/demos/myapp1(.*) $1 break;
try_files $uri @proxy_to_app;
}
...
}
server {
listen 82;
server_name 20.20.20.20;
location /demos/myapp2/ {
rewrite ^/demos/myapp2(.*) $1 break;
try_files $uri @proxy_to_app;
}
...
}
server {
listen 83;
server_name 20.20.20.20;
location /demos/myapp3/ {
rewrite ^/demos/myapp3(.*) $1 break;
try_files $uri @proxy_to_app;
}
...
}
重新加载Nginx
sudo service nginx restart
测试一下:
http://20.20.20.20:81/myapp1/
http://20.20.20.20:82/myapp2/
http://20.20.20.20:83/myapp3/
如果您有更好的方法来解决我的问题,请告诉我!