我有一个 nginx 反向代理,我想让它将流量转发到多个站点,并在端口 443 上监听所有这些服务。我在几个地方都见过这种做法,这似乎是设置反向代理的正常方式……它监听单个端口,并根据 URL 进行转发。
但是,我认为有些设置有点奇怪,因为我有一个网站通过 IIS 网站使用 NTLM 验证,因此我正在使用nginx 流
这是我当前的配置文件:
/opt/nginx/nginx.conf
stream {
upstream backend {
hash $remote_addr consistent;
server mysite.domain.com:80 weight=5;
server 192.168.0.5 max_fails=3 fail_timeout=30s;
}
server {
listen 192.168.0.2:443 ssl;
ssl_certificate /usr/local/nginx/conf/mycert.crt;
ssl_certificate_key /usr/local/nginx/conf/mykey.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include /opt/nginx/sites-enabled/*;
}
/opt/nginx/sites-available/default
server {
listen 80 default;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 192.168.0.2:443 ssl;
server_name myothersite.domain.com;
ssl_certificate /usr/local/nginx/conf/mycert.crt;
ssl_certificate_key /usr/local/nginx/conf/mykeykey;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.0.6:80;
proxy_set_header Host $host;
proxy_redirect http:// $scheme://;
}
}
当我重新启动 nginx 时,出现错误
bind() to 127.0.0.1:443 failed (98: Address already in use)
我认为在每个端口下都server
可以让它监听同一个端口,但这似乎不起作用。
如果我把流全部删除,只使用另外两个不使用流的站点,这似乎可以很好地处理多个server
部分。
答案1
根据官方文档- 不同的服务器必须监听不同的地址:端口对。