如何使用nginx将相同的内容提供给https和http?

通常我的nginxconfiguration如下所示:

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服务器指令(不发送redirect到客户端,但在nginx内转发),这样我就不需要写两次相同的configuration?

find解决scheme

 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> } 

你只有两个服务器指令…

  • 一个在端口80上侦听并重写
  • 而另一个监听端口443,是你的主要configuration

当然,你可以这样做(httpsredirect到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; [....] }