Nginx反向代理环境下无法访问缓存静态页面,请求跳转至Tomcat报错
问题原因与解决方案
你的Nginx配置里,location /mycache/ 使用 root 指令的路径拼接逻辑出错,导致Nginx找不到本地文件,最终触发反向代理的错误页面。
核心问题
当请求 http://localhost:8087/mycache/welcome_page.html 时,root C:\nginx-1.22.1\html 会让Nginx尝试查找:C:\nginx-1.22.1\html\mycache\welcome_page.html
但你的文件实际在 C:\nginx-1.22.1\html\welcome_page.html,不存在mycache子目录,所以Nginx返回404,进而跳转到后端Tomcat返回错误页面。
两种解决方法
方法1:用alias替换root(推荐)
alias 指令会直接替换掉location匹配的/mycache/部分,让请求路径对应到正确的本地文件路径。修改后的配置如下:
server { listen 8087; server_name localhost; location /mycache/ { # Windows下用正斜杠更稳妥,路径末尾加斜杠避免拼接错误 alias C:/nginx-1.22.1/html/; index index.html index.htm; # 可选:强制优先查找本地文件,避免意外跳转至后端 try_files $uri $uri/ =404; } location / { proxy_pass http://tomcatcluster; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
方法2:调整文件存储路径
把welcome_page.html移动到C:\nginx-1.22.1\html\mycache\目录下,保持原有root配置不变。这种方法需要修改文件位置,灵活性不如方法1。
生效步骤
修改配置后,重启Nginx服务,再访问http://localhost:8087/mycache/welcome_page.html即可读取本地静态文件。
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

