配置nginx location模块的prox pass不生效,访问一直404.
配置如下:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/conf.d/*.conf;
server {
listen 18080 default_server;
listen [::]:18080 ;
server_name 10.37.3.28;
root /usr/share/nginx/html;
location /prod-api/{
proxy_pass http://10.37.3.28:8080/;
}
}
然后docker启动nginx容器映射的端口命令是: -p 18080:80
我访问:10.37.3.28:18080 是可以访问到我的前端资源的
但是我代理的后端一直接口404
f12查看了一下接口地址 是:10.37.3.28:18080/prod-api/code
代理地址也没错,为啥一直不生效呢,查看nginx日志它是一直再找这个nginx /prod-api 文件下的静态目录
经过了无数次琢磨终于知道了问题.
配置文件listen是监听的nginx容器内部的接口,所以启动命令映射端口应该是: -p 18080:18080
之前误以为listen写的是映射的端口,所以导致一直代理的地址404
反复修改location模块一直无效,原来坑在这!!!