Wie erstelle ich mehrere Nginx-Reverse-Proxys?

Wie erstelle ich mehrere Nginx-Reverse-Proxys?

Ich möchte mich verbindenexample.com/api/kaufenUndexample.com/api/sellzu einer bestimmten Site über Reverse-Proxy.

Ich versuche also, eine Verbindung herzustellen durchlocalhost/api/kaufenUndlocalhost/api/verkaufenmit nginx.

Ich habe die Konfigurationsdatei wie unten eingerichtet.

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;
            }

}

Aber wenn ich /api/buy und /api/sell verbinde, erhalte ich die Fehlermeldung „404 nicht gefunden“.

Sie können es über einen anderen Port einrichten.

Ich möchte es auf denselben Port einstellen, aber gibt es eine andere Möglichkeit?

Antwort1

Wenn der Standort mithilfe eines regulären Ausdrucks angegeben wird, sowie auch innerhalb benannter Standorte.

In diesen Fällen sollte proxy_pass ohne URI angegeben werden.

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

verwandte Informationen