我正在运行一个 UWSGI Django API,它在 NGINX 中的配置如下:
upstream django_api {
server 127.0.0.1:8088;
}
server {
server_name api.domain.com;
root /home/www/api/domain/;
access_log /var/log/nginx/api.domain.com-access.log;
error_log /var/log/nginx/api.domain.com-error.log;
location / {
uwsgi_pass django_api;
include uwsgi_params;
uwsgi_read_timeout 600;
add_header Host $hostname;
}
}
节点应用程序的配置如下:
server {
server_name app.domain.com;
root /home/www/app/dist/;
access_log /var/log/nginx/app.domain.com-access.log;
error_log /var/log/nginx/app.domain.com-error.log;
location / {
try_files $uri $uri/ /index.html;
proxy_cache domain_zone;
add_header X-Proxy-Cache $upstream_cache_status;
}
}
我想从我的应用程序的子路径(如 app.domain.com/api/)以及 api.domain.com 提供 Django api。
通常我认为我需要在 app.domain.com 下创建一个新的位置块,如下所示:
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8088;
}
但它不起作用,我收到 500 错误。我尝试了许多其他配置,但都没有成功。可以这样做吗?
答案1
通过uwsgi_pass
显然起了作用,感谢 Alexy 的建议。
新的配置现在是这样的:
location /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8088;
uwsgi_pass django_api;
include uwsgi_params;
uwsgi_read_timeout 600;
add_header Host $hostname;
}