swagger 访问nginx 问题解决

 

服务架构

 

loadbalance层配置

nginx初始配置

server {
    listen       443;
    server_name  xxx.com;
    ssl on;
    ssl_certificate /etc/nginx/conf/xxx.com.pem;
    ssl_certificate_key /etc/nginx/conf/xxx.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    #location / {
    #    root   /usr/share/nginx/html;
    #    index  index.html index.htm;
    #}

   location / {
       proxy_pass http://x x x:y;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
   }
}

测试后发现, 直接命令行curl xxx.com 或者 浏览器访问都是正常的,但是swagger无法访问

开始解决问题

页面检查发现swagger 访问的地址 变成了x x x:y, 可以确定是 代理 或请求转发 有问题,

从nginx作手 尝试 增加对 host 的绑定

server {
    listen       443;
    server_name  xxx.com;
    ssl on;
    ssl_certificate /etc/nginx/conf/xxx.com.pem;
    ssl_certificate_key /etc/nginx/conf/xxx.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

   location / {
       proxy_pass http://x x x:y;
       proxy_set_header Host $host;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
   }
}

 

reload 之后 使用swagger访问 发现 访问地址变成了xxx.com:y, 设置代理的时候把端口 带上了,

尝试 指定 协议 和 代理端口

server {
    listen       443;
    server_name  xxx.com;
    ssl on;
    ssl_certificate /etc/nginx/con/xxx.com.pem;
    ssl_certificate_key /etc/nginx/conf/xxx.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

   location / {
       proxy_pass http://xxx:y;
       proxy_set_header Host $host;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       #proxy_set_header Host $host:$server_port;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Port $server_port;
   }
}

内部nginx配置

server {
    listen       y;
    server_name  xxx;

   location / {
       proxy_pass http://xxx:y;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
   }
}

 

reload 之后 使用swagger访问, 此时已经可以正常返回

 

配置参考:https://github.com/abel1225/DevOps-Configuration/blob/master/nginx/config/nginx-swagger.conf

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值