[英]nginx proxy_pass configuration for two services running on diff ports
我需要重定向或 proxy_pass 以下内容:
每个以/api/v1/
开头的请求到: @server
其他一切/
到@client
我已经@server
运行在端口8080
和@client
端口8081
@client and @server
正在运行的泊坞窗容器。
笔记。 一切都应该使用https。 以下配置是我所拥有的,但它不起作用 idkw
server {
server_name example.com;
listen 80;
listen [::]:80 ipv6only=on;
return 301 https://example.com$request_uri;
}
server {
server_name example.com;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
...
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
location /api/v1/ {
try_files $uri @server;
}
location / {
try_files $uri @client;
}
location @client {
proxy_pass http://client:8081;
}
location @server {
proxy_pass http://server:8080/api/v1/;
}
}
如果您必须使用命名位置,那么您可以使用下面的error_page
方法。
通过为设置为命名位置的代码return
未使用的HTTP 状态代码和error_page
,我们可以将请求转发到这些命名位置:
server {
server_name example.com;
listen 80;
listen [::]:80 ipv6only=on;
return 301 https://example.com$request_uri;
}
server {
server_name example.com;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
...
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
error_page 350 = @client;
error_page 351 = @server;
location /api/v1/ {
return 351;
}
location / {
return 350;
}
location @client {
proxy_pass http://client:8081;
}
location @server {
proxy_pass http://server:8080/api/v1/;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.