Ich möchte mich verbindenbeispiel.com:80Undbeispiel.com:82zu einer bestimmten Site über Reverse-Proxy.
localhost/api/kaufen/ ->http://example.com:80/
localhost/api/verkaufen/ ->http://example.com:82/
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“.
Unten sehen Sie den Inhalt der Datei error.log.
connect() failed (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /api/ HTTP/1.1", upstream: "http://example.com/api/buy/", host: "localhost"
Bei Verwendung eines anderen Ports habe ich bestätigt, dass die Einstellung gut funktioniert.
Ich möchte es auf denselben Port einstellen, aber gibt es eine andere Möglichkeit?
Antwort1
Der beste Weg ist, sich zu ändernProxy-Passworthttp://example.com:80/Zu Proxy-Passworthttp://example.com:80/api/buy/
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/api/buy/;
proxy_redirect off;
}