Nginx conf管理2个ssl和x27;d端点
以下是设置:Nginx conf管理2个ssl和x27;d端点,nginx,nginx-reverse-proxy,nginx-config,Nginx,Nginx Reverse Proxy,Nginx Config,以下是设置: fowarding\u proxy->server\u 1,server\u 2 server\u 1->app1.domain.com,app2.domain.com server_2->app3.domain.com,app4.domain.com 其中,每台服务器都运行一个docker守护程序,该守护程序具有基于的nginx反向代理 两台服务器都位于同一个路由器后面,我需要一种基于主机名将流量正确路由到每台服务器的方法。我一直在尝试使用nginx流模块,因为我不想让转发代理处
fowarding\u proxy
->server\u 1
,server\u 2
server\u 1
->app1.domain.com
,app2.domain.com
server_2
->app3.domain.com
,app4.domain.com
其中,每台服务器都运行一个docker守护程序,该守护程序具有基于的nginx反向代理
两台服务器都位于同一个路由器后面,我需要一种基于主机名将流量正确路由到每台服务器的方法。我一直在尝试使用nginx流模块,因为我不想让转发代理处理任何ssl终止,但是$ssl\u preread\u name
指令(似乎)无法捕获http流量上的主机名,并且我无法在流模块中执行服务器上的301
指令。最好的方法是什么
我已经包括了一个我目前正在使用的配置示例,并且我已经尝试了多次迭代。欢迎任何建议
(另外,顺便说一句,access.log中没有任何日志)
转发代理nginx.conf
提出了一个解决方案,很高兴听到更好的解决方案 我创建了两个新的nginx容器,一个用于HTTP流量,另一个用于HTTPS流量,而不是单个转发代理,并将它们放在一个docker compose文件中,以便于管理 HTTP转发代理
http {
map $host $name {
default server1;
app3.strangedreamsinc.com server2;
app4.strangedreamsinc.com server2;
}
upstream server1 {
server server1_ip:8080;
}
upstream server2 {
server server2:8080;
}
server {
listen 80 default_server;
server_name _;
location / {
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_pass http://$name;
}
}
}
stream {
map $ssl_preread_server_name $name {
default server1;
app1.strangedreamsinc.com server1;
app2.strangedreamsinc.com server1;
}
upstream server1 {
server server1_ip:8443;
}
upstream server2 {
server server2_ip:8443;
}
server {
listen 443;
proxy_pass $name;
ssl_preread on;
}
}
HTTPS转发代理
http {
map $host $name {
default server1;
app3.strangedreamsinc.com server2;
app4.strangedreamsinc.com server2;
}
upstream server1 {
server server1_ip:8080;
}
upstream server2 {
server server2:8080;
}
server {
listen 80 default_server;
server_name _;
location / {
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_pass http://$name;
}
}
}
stream {
map $ssl_preread_server_name $name {
default server1;
app1.strangedreamsinc.com server1;
app2.strangedreamsinc.com server1;
}
upstream server1 {
server server1_ip:8443;
}
upstream server2 {
server server2_ip:8443;
}
server {
listen 443;
proxy_pass $name;
ssl_preread on;
}
}
我不确信没有更好的方法,也可能有我忽略的地方,但这允许我透明地将流量路由到正确的反向代理,并且仍然支持letsencrypt协议将SSL应用到我的服务器