使用 nginx 代理

使用 nginx 代理

我正在对一组服务进行重大的重写/更新,并努力让 Apache/Nginx/Django 相互兼容。

这里发生的事情是,有一个使用 Django 编写的内部应用程序和 API 端点,并通过 mod_wsgi 挂接到 Apache。所有这些都在端口 8080 上运行。按照 Django 最佳实践,我使用 nginx 作为代理来提供静态资产,同时让根内容转到 Django 应用程序。因此,nginx 正在监听端口 80,并将任何不以 8080 开头的流量路由/static/到端口 8080。

我们有一个带有自定义插件的 wordpress 网站,该插件使用 Django 应用程序中的端点。我想要做的是让 wordpress 在端口 8091 上运行,但要有类似于localhost/wp/访问 WP 站点的任何 URL。

不幸的是,现在我每次尝试通过端口 80 访问各个站点时都会收到 404 错误。点击localhost:8080localhost:8091显示预期的应用程序,但不是通过直接localhost

nginx.conf:

upstream backend {
        server localhost:8080;
}

server {
        listen 80;
        server_name www.staging.com staging.com staging-local;

        access_log /home/mainuser/projects/update/logs/nginx_access.log;
        error_log  /home/mainuser/projects/update/logs/nginx_error.log info;

        location /wp/ {
                proxy_pass http://localhost:8901;
                include /etc/nginx/proxy_params;
        }

        location /static/ {
                root /home/mainuser/projects/update/server/data/static;
        }

         location / {
                proxy_pass http://localhost:8080;
                include /etc/nginx/proxy_params;
        }
}

代理参数:

proxy_redirect  off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size        10m;
client_body_buffer_size     128k;
proxy_connect_timeout       90;
proxy_send_timeout          90;
proxy_read_timeout          90;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;

答案1

你指向的地方有一个未使用的upstream名称backend没有什么目前。直接从Nginxupstream文档

upstream backend {
    server backend1.example.com      weight=5;
    server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
    server backend3.example.com      resolve;

    server backup1.example.com:8080  backup;
    server backup2.example.com:8080  backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

port在 中设置,upstream而不是proxy_pass指令。

相关内容