通常我的 nginx 配置如下所示:
server {
listen 80;
server_name example.com;
<some long config>
}
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate qwe.crt;
ssl_certificate_key qwe.key;
<the same long config>
}
如何将所有 https 请求转发到 http 服务器指令(不将重定向发送到客户端而是在 nginx 内转发),这样我就不需要两次编写相同的配置?
答案1
找到解决方案:
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
<some long config>
}
答案2
您只有两个服务器指令......
- 一个监听 80 端口并进行重写
- 另一个监听 443 端口,是你的主配置
当然,您也可以反过来做(将 https 重定向到 http),这没有什么区别。
在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https?
server {
listen 80;
server_name my.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name my.domain.com;
ssl on;
[....]
}