ssl - 如何从 nginx 上的 https 重写中排除子域?

标签 ssl nginx passenger lets-encrypt

我最近安装了 LetsEncrypt SSL 证书,它在我的主域上运行良好,但我还有其他设置为虚拟主机的子域。但是,所有到子域的流量现在都重定向到 https,这导致浏览器提示隐私问题。

我的主域 nginx 配置如下:

server {                                                                                                              │
        listen 80;                                                                                                    │
        server_name domain.com www.domain.com;                                                                          │
        return 301 https://$server_name$request_uri;                                                                  │
}                                                                                                                     │
                                                                                                                      │
server {                                                                                                              │
        # Basic configuration                                                                                         │
        listen 443 ssl;                                                                                               │
        server_name domain.com www.domain.com;                                                                      │
        passenger_enabled on;                                                                                         │
        passenger_app_env development;                                                                                │
        root /home/user/path_to_app/public;                                                                       │
                                                                                                                      │
        # Required for LetsEncryptSSL certificate                                                                     │
        location ~ /.well-known {                                                                                     │
                        allow all;                                                                                    │
        }                                                                                                             │
                                                                                                                      │
        # Include SSL config                                                                                          │
        include snippets/ssl-domain.com.conf;                                                                        │
        include snippets/ssl-params.conf;                                                                             │
}     

我的子域配置是这样的:

server {                                                                                                              │
        #listen 80 default_server;                                                                                    │
        server_name app1.domain.com;                                                                                 │
        passenger_enabled on;                                                                                         │
        passenger_app_env development;                                                                                │
        root /home/app1/app1/public;                                                                                  │
}      

最佳答案

我认为这样做的唯一机会是将 server_name 定义为第一个括号中的正则表达式。 也就是像这样的东西

server {                                                                                                             
        listen 80;                                                               
        server_name ^(www\.domain\.com|domain\.com)$;
        return 301 https://$server_name$request_uri;
        }

http://nginx.org/en/docs/http/server_names.html

关于ssl - 如何从 nginx 上的 https 重写中排除子域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995050/

相关文章:

node.js - Ghost 作为 npm 模块不提供 Assets 服务?

nginx - 在带有 rtmp 模块的 nginx 中使用时,工作 ffmpeg 命令失败

ruby-on-rails - mod_rails 使 : command not found

html - 如何在 nginx 中提供 html 文件而不显示此别名设置中的扩展名

python - 强制 Mechanize 使用 SSLv3

azure - 无法成功验证我的网站的 SSL

android - 使用 HttpClient 在 Android 中重用 SSL session

css - Phusion Passenger 会使我的 CSS 渲染与 Rails 3.2 中的本地服务器开发不同吗?

performance - Redmine 性能不一致

c++ - 无法使用 OpenSSL 1.1.1 从 ClientHello 检索服务器名称 (SNI)