upstream easyopen {
server 127.0.0.1:7802;
server 127.0.0.1:7803;
}
server {
listen 80;
server_name localhost;
location ^~/ {
proxy_pass http://easyopen;
}
}
docker重新加载nginx配置命令:
docker exec nginx-web nginx -s reload
一、proxy_pass加/与不加/的区别
1、proxy_pass 后不加 / 的情况
Nginx 会将 location 匹配的路径部分保留并拼接到代理目标 URL 后。例如:
location /api/ {
proxy_pass http://backend_server;
}
当用户访问 http://your_nginx_server/api/user 时,请求会被转发到http://backend_server/api/user。适用场景:需要将完整的原始请求路径(包括 location 部分)传递给后端服务时使用。
2、proxy_pass 后加 / 的情况
Nginx 会剥离 location 匹配的路径部分,仅将 location 后的剩余路径拼接到代理目标 URL 后。例如:
location /api/ {
proxy_pass http://backend_server/;
}
当用户访问 http://your_nginx_server/api/user 时,请求会被转发到 http://backend_server/user。适用场景:后端服务需要独立的路由规则,且不希望接收 location 匹配的路径前缀时使用。
二、location 路径末尾加 / 与不加 / 的匹配规则
1、加 / 的情况(精确目录匹配)
当 location 路径以 / 结尾时,Nginx 会要求 精确匹配目录。
location /wandou/ { ... }
仅匹配以 /wandou/ 开头的请求,如 /wandou/123,但 不匹配 /wandouduoduo 或 /wandou(缺少末尾斜杠)。
2、不加 / 的情况(前缀模糊匹配)
当 location 路径不以 / 结尾时,Nginx 会进行 前缀模糊匹配。
location /wandou { ... }
可匹配以 /wandou 开头的任意路径,如 /wandoudouduo、/wandou/123 等。