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