我想用nginx作为apache和gunicorn的反向工具
location /应该由apache处理
location /webapps/应该由gunicorn处理
upstream gfbu_app_server { server unix:/webapps/gfbu/run/gunicorn.sock fail_timeout=0; } server { listen 80; server_name eu-con.gfbu; client_max_body_size 4G; access_log /webapps/gfbu/logs/nginx-access.log; error_log /webapps/gfbu/logs/nginx-error.log; location /static/ { alias /webapps/gfbu/gfbu/static/; } location /media/ { alias /webapps/gfbu/gfbu/media/; } location /webapps/ { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://gfbu_app_server; break; } } error_page 500 502 503 504 /500.html; location = 500.html { root /webapps/gfbu/static/; } # everything to apache location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8090; }
这种工作方式,但是对于gunicorn的请求URL是http://<ipaddress>/webapps/但它必须工作。
Gunicorn提供了一个Django Webapp,它不能匹配http://<ipaddress>/webapps/到任何url模式。 很显然,我在这里做了一些错误 – 从Apache和mod_wsgi来的,可以将请求redirect到指定的wsgi_script,而不需要subdir部分。
Iam不确定是Nginx的一部分 – > gunicorn – > Django堆栈被错误configuration – 你能帮我吗?
更换
proxy_pass http://gfbu_app_server;
附:
proxy_pass http://gfbu_app_server/;
这对if块不起作用。 为了不破坏Djangos自动生成的URL(记住:Django认为它在文档根目录下运行),您必须将FORCE_SCRIPT_NAMEvariables添加到settings.py例如:
FORCE_SCRIPT_NAME = "/webapps"
还要检查是否需要更改LOGIN_URL和LOGOUT_URL的redirect