我想使用 nginx 反向代理配置作为我的家庭网络的单一入口点。
如果我连接到根站点https://我的名字/使用基本身份验证检查用户和密码。接下来显示一个简单的 html 表,其中包含指向我的内部服务器/系统的链接,例如:
href="/esxi"
href="/openmediavault"
href="/emby"
我尝试过类似这样的地点
location /esxi/ {
auth_basic "Restricted Content ESXi";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass https://x.x.x.x:yyyy/;
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;
}
location / {
root /var/www/html;
index index.html;
try_files $uri /index.html;
}
但这不起作用。始终显示带有表格的默认站点。ESXI 站点的路径从 /esxi 更改为 /ui,但不显示 ESXI 站点。
我如何设置 nginx 来代理 /location 到内部服务器?
答案1
您缺少proxy_redirect
ESXi Web 界面,所以发生了什么 - 您的 ESX 返回重定向到新页面,并且您的浏览器从 nginx 请求它,但 nginx 不知道从哪里获取它,因为它与位置不匹配。我建议从以下方法开始
proxy_redirect https://x.x.x.x:yyyy/ui/ https://x.x.x.x:yyyy/esx/ui/;
但这需要进一步的测试和改进。
或者,您可以使用更简单的方法,并为 ESXi Web 界面返回的每个模式添加指向它的位置proxy_pass
。这确实更简单,但不太优雅和熟练。