【发布时间】:2020-09-13 23:06:30
【问题描述】:
设置如下:fowarding_proxy -> server_1, server_2server_1 -> app1.domain.com, app2.domain.comserver_2 -> app3.domain.com, @ 987654330@
每台服务器都运行一个 docker 守护进程,该守护进程带有一个基于 jwilder/nginx-proxy + letsencrypt setup 的 nginx 反向代理。
两台服务器都位于同一个路由器后面,我需要一种方法来根据主机名将流量正确路由到每台服务器。我一直在尝试使用 nginx 流模块,因为我不希望转发代理处理任何 ssl 终止,但 $ssl_preread_name 指令不(似乎)捕获 http 流量上的主机名,我可以' t 对流模块中的server 指令执行 301。解决这个问题的最佳方法是什么?
我已经包含了一个我目前正在使用的配置示例,并且我已经尝试了多次迭代。接受任何建议。
(另外,顺便说一句,nothing 记录到 access.log)
Forward_proxy nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
stream {
# bare bones content, still nothing written to the log.
log_format main '[$time_local] $remote_addr'
access_log /var/log/nginx/access.log main;
map $ssl_preread_server_name $name {
app1.domain.com server1;
app2.domain.com server1;
app3.domain.com server2;
app4.domain.com server2;
}
upstream server1 {
server server1:80;
}
upstream server2 {
server server1:80;
}
upstream server1_ssl {
server server1:443;
}
upstream server2_ssl {
server server1:443;
}
server {
listen 80;
proxy_pass $name;
ssl_preread on;
}
server {
listen 443;
proxy_pass "${name}_ssl";
ssl_preread on;
}
}
【问题讨论】:
标签: nginx nginx-reverse-proxy nginx-config