我的网站上有两个子域名,均提供网络应用程序,还有一个在域名(和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
因此它肯定正在运行。我还仔细检查了symlink
,sites-enabled
重新启动了nginx
,但仍然没有成功。
有任何想法吗?
答案1
看起来这个问题是由于我自己的懒惰造成的。
当我对服务器块进行符号链接时,我是这样做的:
ln -s ./gitea ../sites-enabled/gitea
从sites-available
目录内。
看起来这种简写在创建符号链接时不起作用。因此,虽然看起来链接已成功创建,但链接实际上已损坏。当我使用以下命令重新创建完整路径时,它就正常工作了。
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea
感谢理查德史密斯的帮助!