我想使用 nginx 在同一个域上运行多个站点,但在不同的端口上,并希望它们都使用 SSL
假设,
我有两个站点siteone.com
,sitetwo
目录/var/www/
如下:
/var/www/siteone.com/
/var/www/sitetwo/
我想siteone.com
在域名上托管https://siteone.com并且
sitetwo
位于同一个域上但在不同的端口上,例如https://siteone.com:8080
注意:SSL
在两个站点上都拥有这一点很重要。
听起来我在这里有点过度工程化了,但我仍然想知道是否可以这样做?我正在使用nginx
Web 服务器。我的 nginx conf 文件是什么样的?
我曾尝试使用以下方法,但没有效果:
server {
listen 443;
server_name siteone.com;
root /var/www/;
# ssl stuff here
}
server {
listen 8080;
server_name sitetwo;
root /var/www/;
# ssl stuff here
}
server {
listen 80;
server_name siteone.com;
return 301 https://$host$request_uri;
}
答案1
以下是给所有来这里的人的几点建议:
正如@Sven正确指出的那样此评论,我应该在上面提到的第二个服务器块中写siteone.com
而不是。但问题并没有就此结束。我设置的站点包含用户登录,因此我已在服务器上安装了该站点。因此,每当我使用同一个浏览器同时登录两个站点(同一个域,不同的端口)时,我的 IP 都会被阻止。这让我相信这是一个问题。sitetwo
nginx.conf
fail2ban
fail2ban
nginx.conf
为什么要fail2ban
屏蔽我:假设以下场景,
我在浏览器的选项卡 1 中登录siteone.com
。接下来,我在同一个浏览器中打开选项卡 2 并登录siteone.com:8080
。因此,siteone.com
选项卡 1 中的登录无效。但是,选项卡 1 仍在后台尝试使用错误的身份验证连接到服务器,并且由于这种情况不断发生,因此fail2ban
阻止了我的 IP 地址。
我认为上述内容是问题的原因是:如果我使用不同的浏览器或以隐身模式访问第二个网站,一切都可以正常工作。