我有一个静态网站(www.example.com)和一个运行在单台服务器(机器1)上的Django应用程序(example.com/app1)。
网站和应用程序都使用nginx服务。 我正在使用gunicorn服务Django应用程序。
机器1上的nginxconfiguration如下所示:
upstream gunicorn { server 127.0.0.1:8000; # gunicorn serving App1 } server { listen 80 default_server; listen [::]:80 default_server; server_name example.com www.example.com; root /var/www/example; index index.html index.htm index.nginx-debian.html; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; try_files $uri $uri/ /; } # Django media and static files location /media { alias /var/www/media; } location /static { alias /var/www/static; } # gunicorn App1 location /app1 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header SCRIPT_NAME /app1; proxy_redirect off; proxy_pass http://gunicorn; } location /app2 { # This App2 is served on a different machine (machine 2). # Not yet implemented } }
我现在试图让第二个应用程序运行(example.com/app2)作为第二台机器(机器2)上的第二个位置。 机器2上运行另一个nginx是否需要这个工作? 或者我可以只转发到机器2上的gunicorn? 我已经尝试使用
upstream gunicornMachine2 { server xxx.xxx.xxx.xxx:80 # IP of second machine or port 8000 for gunicorn }
和
location /app2 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header SCRIPT_NAME /app2; proxy_redirect off; proxy_pass http://gunicornMachine2; }
这确实提供了502错误的网关。 什么是实施这个最好的方法?