我在NGINX上有两个带有SSL的网站。
什么时候
curl -I https://www.1111.com answer: https://1111.com
但当
curl -I https://www.2222.com answer: https://1111.com curl -I https://2222.com answer https://2222.com
在nginx.conf中,我尝试改变/ import * .conf的顺序,当我在1111.com之前设置2222.com>回答改变相反。
1111.conf
server { listen 80; server_name 1111.com www.1111.com; return 301 https://1111.com;$request_uri; } server { listen 443 ssl http2; server_name 1111.com; root /usr/share/nginx/1111.com; index index.php; ...
2222.conf是类似的
我怎么能redirect所有https:// www。*和http:// www。*在这个网站,而不是其他?
是啊! 正确的configuration:
server { listen 80; server_name site.ru www.site.ru; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443 ssl http2; include ssl/ssl_site.ru; server_name www.site.ru; rewrite ^(.*) https://site.ru$1 permanent; } server { listen 443 ssl http2; server_name site.ru; include ssl/ssl_site.ru; ... other config string ...
这是一个有点棘手的人,但当然,你可以做到这一点。
map $http_host $new { 'www.abc.com' '1'; 'www.xyz.com' '2'; } server { listen 80 default_server; listen [::]:80 default_server; if ($http_x_forwarded_proto != 'https') { rewrite ^(.*) https://$host$1 redirect; } } server { if ($new != '1') { server_name www.xyz.com; listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/ssl/certs/s2.pem; ssl_certificate_key /etc/ssl/certs/s2.key; root /var/www/html/site2; index index.html index.htm index.nginx-debian.html; location / { } } if ($new != '2') { server_name www.abc.com; listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/ssl/certs/s1.pem; ssl_certificate_key /etc/ssl/certs/s1.key; root /var/www/html/site1; index index.html index.htm index.nginx-debian.html; location / { } } }
这可以是更多信息和R&C阅读nginx地图模块的确切答案