我已经在 7000 端口部署了前端应用程序。因此,我需要在 Nginx 中编写一条规则,以便所有来自 7000 (HTTP://example.com:7000) 端口的 HTTP 请求都会自动将 HTTPS 重定向到同一端口 (HTTPS://example.com:7000)
请帮助我解决该问题。这是我当前的 Nginx 配置文件
server {
listen 7000 ssl;
ssl_certificate /new_keys/new_k/ssl_certificate/star_file.crt;
ssl_certificate_key /new_keys/new_k/ssl_certificate/private.key;
root /home_directory;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
}
笔记 :
- 在 7000 端口提供服务的应用程序 URL 是“http://example.com:7000/#/
- 端口 80 已被另一个应用程序占用
- 目前我有一个通配符 SSL 证书
- 服务器 IP 仅指向单个域
答案1
尝试使用错误代码 497 的自定义错误页面。当通过 http 访问 https 网站时,nginx 会引发此错误。只需添加:
error_page 497 https://$host:$server_port$request_uri;
到您的配置,它应该完全按照您在问题中定义的要求进行操作。
请参阅以下讨论以获取更多信息: 使用 nginx 的单个端口处理 http 和 https 请求
答案2
您不能使用 NGINX 同时监听 HTTP 和 HTTPS,您需要两个单独的端口。
为什么应用程序已经在端口 80 上运行会阻止您添加另一个域?