HTTPS 重定向和子域名 NGINX

HTTPS 重定向和子域名 NGINX

我的网站上有两个子域名,均提供网络应用程序,还有一个在域名(和www.)本身上运行的网站;它们是:

gitea.mywebsite.co.uk- 正在运行:3000

mail.mywebsite.co.uk- 尚未运行

这两者都配置了CName指向它们的 DNS 条目mywebsite.co.uk,并且我已经检查过它们实际上已经传播。

我想提供专门的服务,因此需要为子域和整个域HTTPS获取并安装该证书(我买不起这些花哨的通配符证书)。SSL Certificates

为了实现这一点,我已经设置nginx为监听:80并将所有传入HTTP流量重定向到HTTPS这样(HSTS一旦一切准备就绪,我就会实施):

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 301 https://$host$request_uri;
}

这似乎工作正常,无论我输入什么子域名,我都会看到浏览器将其重定向到等效HTTPS域名。

因此,问题似乎发生在reverse proxy配置阶段的某个地方。我希望所有向发出的请求gitea.mywbsite.co.uk都传递给:3000处理。我是这样实现的:

server {
        listen 443 ssl;
        server_name gitea.mywebsite.co.uk;
        ssl_certificate /etc/ssl/certs/gitea.mywebsite.crt;
        ssl_certificate_key /etc/ssl/private/gitea.mywebsite.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        location / {
                proxy_pass https://localhost:3000/;
        }
}

但是,每当我尝试访问它时,我都会看到标准浏览器“无法连接”错误(请注意,这不是 SSL 错误页面)。

我可以通过直接加载成功连接到 Web 应用程序,mywebsite.co.uk:3000因此它肯定正在运行。我还仔细检查了symlinksites-enabled重新启动了nginx,但仍然没有成功。

有任何想法吗?

答案1

看起来这个问题是由于我自己的懒惰造成的。

当我对服务器块进行符号链接时,我是这样做的:

ln -s ./gitea ../sites-enabled/gitea

sites-available目录内。

看起来这种简写在创建符号链接时不起作用。因此,虽然看起来链接已成功创建,但链接实际上已损坏。当我使用以下命令重新创建完整路径时,它就正常工作了。

ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea

感谢理查德史密斯的帮助!

相关内容