我想在 Nginx 后面运行 datastax cassandra opscenter。但它不断向所有 URL 添加 opscenter 端口(默认为 8888)。是否有配置设置可以禁用该功能?
这是我的超级简单的 nginx 配置:
server {
server_name opscenter.hostname.com;
location / {
proxy_pass http://127.0.0.1:8888;
}
}
我是不是做错了什么事?
答案1
通过将 nginx 重定向到 /opscenter 解决了这个问题
location = / {
rewrite (.*) /opscenter;
}
答案2
您需要创建如下所示的位置:
location / {
proxy_pass http://127.0.0.1:8888;
proxy_redirect http://localhost:8888/ /;
proxy_redirect http://your.host.name:8888/ /;
proxy_buffering off;
}
这些行将从 OpsCenter 返回的响应中proxy_redirect
去除。8888
更多信息proxy_redirect
可以在这里找到http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect
答案3
我尝试了建议的配置和其他配置,但都不适合我。
这是我的用例和我的解决方案。
我的服务器
Nginx 和 OpsCenter 位于两台不同的机器上。与 Nginx 不同,OpsCenter 不能直接从互联网访问。
Nginx 1.4.6 已开启172.132.1.2
(公用网络)
OpsCenter 5.2.0 已开启172.132.2.3
(专用网络)
Nginx 配置
upstream opscenter {
server 172.132.2.3:8888;
}
server {
listen 81 default_server;
listen [::]:81 default_server ipv6only=on;
location / {
proxy_pass http://opscenter;
proxy_redirect http://$proxy_host:8888/ http://$host:$server_port/;
proxy_buffering off;
}
location ~ /\.ht {
deny all;
}
}