如何進行多個 nginx 反向代理?

如何進行多個 nginx 反向代理?

我想連接example.com/api/buyexample.com/api/sell透過反向代理存取特定網站。

所以我試著透過連接本地主機/api/購買本地主機/api/銷售與 nginx 一起。

我設定設定檔如下。

server {
    listen       80;
    server_name  localhost;



    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }


    location = /api/buy {
    return 302 /api/buy/;
    }

        location /api/buy/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://example.com:80/;
            proxy_redirect off;
            }

    location = /api/sell {
    return 302 /api/sell/;
    }

        location /api/sell/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $host;
            proxy_set_header X-NginX-Proxy true;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass http://example.com:82/;
            proxy_redirect off;
            }

}

但是如果我連接 /api/buy 和 /api/sell,我會收到 404 not found 錯誤。

您可以使用不同的連接埠進行設定。

我想將其設置為同一個端口,但是有什麼辦法嗎?

答案1

當使用正規表示式指定位置時,並且也在命名位置內指定位置。

在這些情況下,應在不指定 URI 的情況下指定 proxy_pass。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

相關內容