我有一个nginx反向代理,我希望它将stream量转发到多个站点,并在端口443上监听所有这些服务。 我已经看到这样做了几个地方,似乎有一个反向代理设置的正常方式…它监听单个端口,并转发基于URL。
不过,我有一些设置,我认为有点奇怪,因为我有一个网站,通过IIS网站使用NTLMvalidation,因此,我使用nginxstream
这是我目前的configuration文件:
/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的/网站可用/默认
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你可以在同一个端口上监听,但是这似乎不起作用。
如果我一起删除stream,并使用其他两个不使用stream的网站,这似乎与多个server部分正常工作。
根据官方文档 – 不同的服务器必须监听不同的地址:端口对 。