Nginx 智障坑记录
系统:ubuntu 18.04
文件路径: /etc/nginx/
先说结果:
更改 /nginx/nginx.conf 重新加载发现无效, 发现是默认加载的conf 文件没有注释掉。 注释掉再更改就可以了。
http {
include /etc/nginx/conf.d/*.conf; // 读到这个地方是加载另一个默认配置配置文件default.conf 最前面加 # 注释
}
整个过程描述:
- 前端访问接口 一直提示跨域,修改 nginx.conf 发现无法解决跨域问题。
- 配置有问题,接口不能是IP+端口号 + /api 这样让前端使用 , 改成了 ip + /api 。
http{
server{
listen 80; # 监听的端口 等于 外网IP:80 + /api 访问的是 http://127.0.0.1:18808/api
server_name localhost; # 有域名把localhost换成域名 没有删了就可以。
location /api {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
# root html; # 有proxy_pass 此项可以删除
# index index.html index.htm; # 有proxy_pass 此项可以删除
proxy_pass http://127.0.0.1:18808/api;
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;
proxy_connect_timeout 5;
}
}
}
配置完后的结果是 外网IP + /api 访问的是 服务器的 外网IP + :18808/api 的内容。
3. 发现location 配置根本无效 。 这个时候判断 应该是一个和低级的错误, 发现了 include /etc/nginx/conf.d/*.conf; 注释后 发现配置文件生效了。
总结: 遇到问题 先解决大的方向。 当大方向没问题了, 再解决具体详细的问题。