如何解决使用NGINX上游,是否可以在同一上游将代理传递给HTTP和HTTPS后端?
假设我想将部分流量代理到远程后端,而不是服务器上的本地侦听器。例如:
repository.save(someEntity);
在上述配置中,每20个左右的请求,NGINX就会尝试将其路由到仅监听SSL的id=1
。
上游是否可以定义自己的协议方案?现在,在不将本地侦听器进程也更改为SSL的情况下,这似乎是不可撤消的(这是不太理想的更改)。
谢谢
解决方法
和通常的情况一样,我已经弄清楚了自己的问题,而且很明显。如果您要完成上述操作,则技巧很简单。
- 首先创建一个新的NGINX虚拟主机,该主机可以侦听HTTP并通过proxy_passes远程HTTPS后端,如下所示:
/etc/nginx/sites-available/remote_proxy
upstream remote {
server other-remote-backend.company-internal.com:443;
}
server {
# other-remote-backend.company-internal.com:443;
listen 8181;
server_name my_original_server_name;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://remote;
}
}
- 您现在可以在原始配置中仅使用
http
来监听443:
/etc/nginx/sites-available/default
upstream backends {
server 127.0.0.1:8080 weight=20; # local process (HTTP)
server 127.0.0.1:8181 # local nginx proxying to HTTPS remote
}
location / {
# ...other stuff...
proxy_pass http://backends;
}
现在只需启用您的新站点并重新启动
$ ln -s /etc/nginx/sites-available/remote_proxy /etc/nginx/sites-enabled/ && systemctl restart nginx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。