Nginx:如何通过单独的子目录访问我的反向代理网站

Nginx:如何通过单独的子目录访问我的反向代理网站

我有 2 个 Web 应用程序,希望它们在http://example.com/demo1和下可用http://example.com/demo2。我的以下配置正确地将代理反向连接到每个站点,并且该站点大部分功能正常,但是我的 Web 应用程序的一些 API 请求出现 404 错误,因为它们在请求 URL 中省略了/demo1/demo2子目录。我怀疑我可能需要通过附加子目录来更新标头,但我不确定。更多详细信息如下。

这是我的配置:

worker_processes 1;
error_log stderr notice;
daemon off;

env DEMO1_PORT_8005_TCP_ADDR;
env DEMO2_PORT_8006_TCP_ADDR;

events {
    worker_connections 1024;
}

http {

    include /usr/local/openresty/nginx/conf/mime.types;
    charset utf-8;

    ##
    # Logging Settings
    ##
    error_log /var/log/nginx/error.log warn;
    access_log /var/log/nginx/access.log;                

    ##
    # Virtual Host Configs
    #
    server {
        listen 80;
        server_name example.com;
        # root /var/www;
        root /duwamish;

        location /demo1 {
            # load static files paths first (/static/(.)*), then reverse-proxy to demo
            try_files $uri $uri/ @demo1;
        }
        location @demo1 {
            set_by_lua $server_location 'return os.getenv("DEMO1_PORT_8005_TCP_ADDR")';
            proxy_pass http://$server_location:8005;
            proxy_set_header Host $host;
        }

        location /demo2 {
            # load static files paths first (/static/(.)*), then reverse-proxy to demo
            try_files $uri $uri/ @demo2;
        }
        location @demo2 {
            set_by_lua $server_location 'return os.getenv("DEMO1_PORT_8005_TCP_ADDR")';
            proxy_pass http://$server_location:8005;
            proxy_set_header Host $host;
        }

    }

}

demo1我的网站加载正常,但我和Web 应用程序发出的某些请求出现 404 错误,demo2因为请求 URL 未得到处理。例如,请求 URL 是http://example.com/api/submitted_thing?parameter=true我认为应该http://example.com/demo1/api/submitted_thing?parameter=true

基本上,我想使用类似的东西proxy_set_header Host $host/demo1,但我认为我无法将路径附加到 Host 标头。有什么建议吗?

相关内容