使用 nginx 根据同一域上的端口为不同的安全站点提供服务

使用 nginx 根据同一域上的端口为不同的安全站点提供服务

我想使用 nginx 在同一个域上运行多个站点,但在不同的端口上,并希望它们都使用 SSL

假设,

我有两个站点siteone.comsitetwo目录/var/www/如下:

/var/www/siteone.com/
/var/www/sitetwo/

我想siteone.com在域名上托管https://siteone.com并且 sitetwo位于同一个域上但在不同的端口上,例如https://siteone.com:8080

注意:SSL在两个站点上都拥有这一点很重要。

听起来我在这里有点过度工程化了,但我仍然想知道是否可以这样做?我正在使用nginxWeb 服务器。我的 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 都会被阻止。这让我相信这是一个问题。sitetwonginx.conffail2banfail2bannginx.conf

为什么要fail2ban屏蔽我:假设以下场景,

我在浏览器的选项卡 1 中登录siteone.com。接下来,我在同一个浏览器中打开选项卡 2 并登录siteone.com:8080。因此,siteone.com选项卡 1 中的登录无效。但是,选项卡 1 仍在后台尝试使用错误的身份验证连接到服务器,并且由于这种情况不断发生,因此fail2ban阻止了我的 IP 地址。

我认为上述内容是问题的原因是:如果我使用不同的浏览器或以隐身模式访问第二个网站,一切都可以正常工作。

相关内容