我在一台虚拟机上(同一个IP)搭建了LNMP环境,然后部署两个网站(两个域名),分别时www.4spaces.org,www.weiyanzixun.com,域名解析正常,同时开启了https证书。现在的问题是我访问www.4spaces.org这个域名时,经常会跳转到www.weiyanzixun.com这个域名上,请问我的配置问题出在哪里?
环境:
nginx version: nginx/1.12.1
两个域名的nginx配置文件分别如下:
配置1:.4spaces.https.conf
server{
listen 80;
server_name 4spaces.org www.4spaces.org;
add_header Strict-Transport-Security max-age=15768000;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name 4spaces.org www.4spaces.org;
index index.php index.html index.htm;
root /usr/share/nginx/html;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_certificate /etc/letsencrypt/live/4spaces.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/4spaces.org/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
配置2:weiyan.https.conf
server{
listen 80;
server_name weiyanzixun.com www.weiyanzixun.com;
#告诉浏览器有效期内只准用 https 访问
add_header Strict-Transport-Security max-age=15768000;
#永久重定向到 https 站点
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name weiyanzixun.com www.weiyanzixun.com;
index index.php index.html index.htm;
root /usr/share/nginx/weiyanzixun;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_certificate /etc/letsencrypt/live/weiyanzixun.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/weiyanzixun.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
location / {
try_files $uri $uri/ /index.php?$args; #修改内容
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#修改此处内容支持php
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
请哪位大神告诉我问题出在哪里,还有就是这个配置有那些地方可以进行优化的?
这个配置没有问题,建议检查是否有浏览器缓存。
另外建议用curl或者浏览器的开发者工具禁用缓存来测试
http的配置可优化:
楼主的https裸域是301跳转到www的,所以http的配置建议把www放在裸域的前面,减少一次跳转
$server_name
只能获取到server_name
指令的第一个域名去掉
add_header Strict-Transport-Security max-age=15768000;
,所有浏览器在http协议下都是忽略这个头部的,这个头部只有在https协议下才有效如果需要添加只能添加到https里面