社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

两个在diff端口上运行的服务的nginx proxy_pass配置

Ignacio Martínez • 6 年前 • 812 次点击  

我需要重定向或代理通过以下内容:

每个请求都以 /api/v1/ 致: @server 其他一切 / @client

我有 @服务器 在端口上运行 8080 @客户 在港口 8081 @client and @server 正在作为Docker容器运行。

注意。一切都应该使用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/;
    }

}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47093
文章 [ 1 ]  |  最新文章 6 年前
Danila Vershinin
Reply   •   1 楼
Danila Vershinin    7 年前

如果你 必须 使用命名位置,然后可以使用 error_page 接近下面。

return 惯性导航与制导 未使用 http状态代码和 错误页面 对于设置为命名位置的代码,我们可以将请求转发到这些命名位置:

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

}