swagger:IP可以访问正常,域名访问异常 报错TypeError: Failed to fetch

本文详细介绍了如何通过创建proxy.conf文件并配置Nginx,实现对特定域名下的API请求进行代理转发,解决了访问Swagger文档的问题。配置包括设置代理头信息、调整缓冲区大小和超时时间等。

和同事找好半天问题,黄天不负有心人,终于结局了。

需要创建一个文件 proxy.conf  保存到 nginx  的 目录下 /etc/nginx 之后在自己的域名下配置上

root@iZ2zeg7004ksh29snhjuzmZ nginx]# vi proxy.conf 

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_send_timeout 15;
proxy_read_timeout 15;
proxy_buffer_size 4k;
proxy_buffers 32 4k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
 

配置域名:

 location ^~ /api/ {
                include proxy.conf;
                proxy_pass http://127.0.0.1:8010/;
        }

         location / {
                include proxy.conf;
                proxy_pass http://127.0.0.1:8010/;
        }
 

访问swagger 文档 完美解决。

 

### 解决方案 当遇到 `TypeError: Failed to fetch` 的错误时,可以从多个角度来排查并解决问题。 #### Nginx 配置调整 Nginx作为反向代理服务器,在配置不当的情况下可能会导致跨域资源共享(CORS)问题或是请求路径不匹配的问题。确保Nginx配置正确处理来自Swagger UI发出的HTTP请求非常重要[^1]。 对于CORS的支持,可以在Nginx配置文件中加入如下设置: ```nginx location / { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; if ($request_method = 'OPTIONS') { return 204; } proxy_pass http://backend_server_address/; } ``` #### Swagger API 文档配置优化 如果Swagger文档中的URL与实际部署环境不符,则可能导致资源加载失败。可以通过修改Spring Boot应用程序内的Swagger配置类(`@Configuration`),指定正确的主机名和端口号,从而使得生成的API文档指向正确的服务位置[^3]。 例如: ```java @Bean public Docket createRestApi(Environment environment) { boolean isDevOrLocalProfileActive = environment.acceptsProfiles(Profiles.of("dev", "local")); return new Docket(DocumentationType.SWAGGER_2) .enable(isDevOrLocalProfileActive) .host(System.getenv("HOST_NAME") != null ? System.getenv("HOST_NAME") : "default_host_name") // 其他配置... ; } ``` 这里使用了环境变量`HOST_NAME`动态设定主机名称,默认情况下如果没有提供特定值则采用预设字符串替代。 #### 广告拦截器干扰排除 某些浏览器插件如Adblock Plus可能误判Swagger页面上的组件为广告而阻止其加载,进而引发上述异常情况。建议尝试禁用这些扩展程序后再重新测试连接状况[^2]。 #### 内网穿透场景下的特殊考虑 针对内网穿透的应用场景,应当特别注意Swagger配置里的`host`属性应仅包含外部可访问域名部分而不含协议前缀或结尾斜线[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值