StackExchange 这边的新手。我一直在尝试设置一个 nginx 服务器作为前端 http 服务器,重定向到网络内的其他服务器(稍后用于负载平衡,但现在我们只希望代理能够正常工作),
我对该位置进行了以下设置:
location /site/ {
proxy_pass http://www.mysite.com:port/site/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
我现在的问题是,它可以很好地加载第一页(首页)和第二页(登录表单)上的所有内容,但是当用户登录并进入第三页(仪表板)时,浏览器无法加载内部动态加载的某些页面(想想 jsp 包含的内容)。
有趣的是,如果我设置了一个位置,http://www.mysite.com:port
然后只需通过http://localhost:8080/site/
它访问它,它就会加载所有内容,进行登录,并且用户就可以使用里面的所有内容,而不会出现问题。
现在,您可以说,“好吧,就让他们那样使用它”,但我想在另一台服务器上隐藏该页面的全名。
我怎样才能做到这一点而不让这些文件返回错误 500?
PS:设置代理来处理 JBoss 应用服务器的数据。(在这里添加这个,因为可能是 JBoss 服务器不太喜欢这个名称的代理处理)
答案1
我会认为它没有正确传递 post/get/session 数据?在使用 nginx 代理时,我发现最好的线索是跟踪代理框 nginx 日志(位于 /var/log/nginx)之间的时间戳,并将其与正在通过的系统上的日志进行比较。我经常会发现诸如 URL 重写损坏(例如意外配置 nginx 以将 uri 数据传递给 _GET 变量而不是传递原始 url)之类的东西,或者只是“未找到”的东西。尤其是 500 错误