问题:Linux系统发布.Net Core5.0 API程序,使用Nginx做二级目录代理出现swagger.json404
Ngix 配置
Nginx 监听80端口,二级目录设为 BlogAPI,Asp.Net Core 程序实际访问地址为 http://www.xxx.com:5006/。
server
{
listen 80;
listen 443 ssl http2;
server_name www.xxx.com;
index index.php index.html index.htm default.php default.htm default.html;
ssl_certificate /www/server/panel/vhost/cert/xxx.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/xxx.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
location / {
root /www/wwwroot/Blog/web;
proxy_pass https://127.0.0.1:5005;
}
location /BlogAPI/ {
root /www/wwwroot/Blog;
proxy_pass https://127.0.0.1:5006/;
proxy_set_header X-Request-Uri $request_uri;
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
access_log /www/wwwlogs/ninebaby.cn.log;
error_log /www/wwwlogs/ninebaby.cn.error.log;
}
打开swagger页面时,会提示找不到/swagger/v1/swagger.json
解决方法
Nginx 转发请求时,是知道原始请求地址的,我们只需要将原始请求地址告诉 swagger,由 swagger 来分析出二级目录即可&#