我已经在 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 仅指向单个域
你不能用 NGINX 同时监听 HTTP 和 HTTPS,你需要两个独立的端口。
为什么应用程序已经在端口 80 上运行,这会阻止您添加另一个域?
尝试对错误代码 497 使用自定义错误页面。当通过 http 访问 https 网站时,nginx 会引发此错误。只需添加:
error_page 497 https://$host:$server_port$request_uri;
到您的配置,它应该完全按照您在问题中定义的要求。
在下面的讨论中查找更多信息: 使用带有 nginx 的单个端口处理 http 和 https 请求