我一直在寻找一个nginx反向代理配置,可以:
从端口80接收来自我的路由器的传入流量,来自mydomain.com;
,例如sd01,sd02,sd03。
即。 sd01.mydomain.com - 然后必须通过nginx反向代理(host1),并将请求指向我的路由器后面的host2(所有RPi' s),并路由到此host2上的其他端口。
在host2(ip地址为192.168.1.33)上,我有一个docker运行几个node-red实例,每个容器指向host2上的另一个端口:
- sd01.mydomain.com to point to 192.168.1.33:1101
- sd02.mydomain.com to point to 192.168.1.33:1102
- sd03.mydomain.com to point to 192.168.1.33:1103
我在网上看到了很多这样的选择,从使用
map $subdomain $subdomain_port {
对其他人,但我不能让它工作。有人能指出我正确的方向吗?
是的,我已经在godaddy上为子域添加了通配符*指令,指向我的路由器的固定IP。
答案 0 :(得分:2)
在您的 nginx 配置文件 (nginx.conf) 中进行以下更改:
server
{
listen 80;
server_name sd01;
location / {
proxy_pass http://127.0.0.1:1101;
}
}
server
{
listen 80;
server_name sd02;
location / {
proxy_pass http://127.0.0.1:1102;
}
}
答案 1 :(得分:1)
您应该在location指令中使用上游指令与proxy_pass相关联。
即
upstream sd01 {
server 192.168.1.33:1101;
}
upstream sd02 {
server 192.168.1.33:1102;
}
upstream sd03 {
server 192.168.1.33:1103;
}
server {
listen 80;
listen [::]:80;
root /var/www;
server_name sd01.mydomain.com;
location / {
proxy_pass http://sd01/;
}
}
server {
listen 80;
listen [::]:80;
root /var/www;
server_name sd02.mydomain.com;
location / {
proxy_pass http://sd02/;
}
}
server {
listen 80;
listen [::]:80;
root /var/www;
server_name sd03.mydomain.com;
location / {
proxy_pass http://sd03/;
}
}
请注意,如果您使用的是套接字,则需要升级该路径的连接:
location /socket/ {
proxy_pass http://socketserverupstream;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
这是我用于所有服务器的类似配置。但是,您可以参考NGINX documentation。