同一个 vps 下用 nginx 代理了两个站点,
第一个没证书,第二个有证书。
问题:
访问 http://demo.com 可以正常第一个站点的内容。
第一个站点的 nginx 文件
server {
listen 80;
listen [::]:80;
server_name www.demo.com;
root /var/www/ghost/system/nginx-root;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
location ~ /.well-known {
allow all;
}
client_max_body_size 50m;
}
第二个站点的 nginx 文件
server {
listen 443 ssl;
server_name server.demo.com;
ssl_certificate /data/_ssl/tmserver.crt;
ssl_certificate_key /data/_ssl/tmserver.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
}
location ~ /.well-known {
allow all;
}
client_max_body_size 50m;
}
1
gam2046 2021-12-01 13:58:33 +08:00
除了这两个 server 是否还存在其他的配置项,类似这样的内容
server { listen 80; server_name _; return 301 https://$host$request_uri; } |
2
Rebron1900 OP @gam2046
我之前也想着是不是引入了其他配置文件,所以去过去核对过 nginx 的主配置文件。 我这边的 server 都是通过 include 引入的,主配置文件没有其他 server ,引入代码: ``` include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; ``` |
3
blackeeper 2021-12-01 14:20:40 +08:00
https://demo.com 是 443 端口,有证书的网站是 server.demo.com 。nginx 是匹配端口之后,再匹配域名,443 的端口只有一个网站,那访问 https://demo.com 会跳转到第二个站点, 显示的内容为第二个站点的内容。
|
4
Rebron1900 OP @blackeeper 这种情况我要怎么改配置文件呢。
|
5
shenqi 2021-12-01 14:35:05 +08:00
https 优先走了 443 ,将 www.demo.com 加 443 监听就行。顺路监听 demo.com
listen 80; listen [::]:80; listen 443 ssl; listen 80; listen [::]:433 ssl; server_name www.demo.com demo.com; root /var/www/ghost/system/nginx-root; ssl 配置之类 xxxxxx |
7
Rebron1900 OP |
8
cnrting 2021-12-01 15:22:12 +08:00
@Rebron1900 用 let's encrypted 签一个
|
9
canbingzt 2021-12-01 15:39:53 +08:00 1
感觉是 default_server 的问题,分别给 80 和 443 配置 default_server 试试
|
11
Rebron1900 OP @cnrting 我现在这个站点就是不想搞 ssl ,有没有不绑定证书的办法
|
12
Rebron1900 OP @canbingzt 刚刚测试了,显示定义 default_server 也不行。
|
13
zelin44913 2021-12-01 16:10:34 +08:00
明显的 default_server 问题
|
14
zelin44913 2021-12-01 16:13:02 +08:00
添加
server { listen 443 default; server_name _; root /data; } |
15
Rebron1900 OP @zelin44913 修改原有的,还有新增一个。
|
16
hahahahahahahah 2021-12-01 22:34:29 +08:00 via iPhone
http 走四层
|
17
Rebron1900 OP 结帖了。
我通过在 server.deme.com 里写 if 来判断 servername , 如果请求的域名是 demo.com 就跳过去,如果是 server.demo.com 就直接给与访问。 不知道是不是最优解,不过问题算是处理好了。 谢谢各位大佬关注。 |