首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Nginx -当使用https访问基于http的次要域时访问https主域

Nginx -当使用https访问基于http的次要域时访问https主域
EN

Stack Overflow用户
提问于 2017-10-20 02:54:59
回答 1查看 49关注 0票数 0

我是新来的。我在同一台服务器上有两个域。一种基于https,另一种基于http

I.,即:

代码语言:javascript
运行
AI代码解释
复制
https://main.site.com  //Accessing a node server app on port 3000

代码语言:javascript
运行
AI代码解释
复制
http://secondary.site.com //Accessing a node server app on port 9000

当我试图访问https://secondary.site.com时,它实际上访问了我的https://main.site.com服务器代码,它应该从https://secondary.site.com重定向到http://secondary.site.com

下面是我的nginx配置:

代码语言:javascript
运行
AI代码解释
复制
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {  

        ##
        # Basic Settings
        ##

        server {
                listen       80;
                server_name  main.site.com;
                location / {
                        proxy_pass          http://main.site.com:3000;
                        proxy_set_header    Host             $host;
                        proxy_set_header    X-Real-IP        $remote_addr;
                        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header    X-Client-Verify  SUCCESS;
                        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
                        proxy_read_timeout 1800;
                        proxy_connect_timeout 1800;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                }
        }


        server {
                listen               443;
                server_name          main.site.com;
                location / {
                        proxy_pass          http://main.site.com:3000;
                        proxy_set_header    Host             $host;
                        proxy_set_header    X-Real-IP        $remote_addr;
                        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header    X-Client-Verify  SUCCESS;
                        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
                        proxy_read_timeout 1800;
                        proxy_connect_timeout 1800;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                 }
                ssl                  on;
                ssl_certificate         /etc/nginx/certificates/cert.pem;
                ssl_certificate_key  /etc/nginx/certificates/kry.pkey;
                ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers  !EDH:!AECDH:!ADH:!DSS:!RC4:ECDSA:HIGH:+3DES;
                ssl_prefer_server_ciphers on;
                ssl_ecdh_curve secp384r1; #courbe ECDH
                add_header Strict-Transport-Security "max-age=31536000";
        }

        server {
                listen       80;
                server_name  secondary.site.com;
                location / {
                        proxy_pass          http://secondary.site.com:9000;
                        proxy_set_header    Host             $host;
                        proxy_set_header    X-Real-IP        $remote_addr;
                        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header    X-Client-Verify  SUCCESS;
                        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
                        proxy_read_timeout 1800;
                        proxy_connect_timeout 1800;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                }
        }



        # set client body size #
        client_max_body_size 20M;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

}
EN

回答 1

Stack Overflow用户

发布于 2017-10-21 05:48:19

由于您希望您的主站点在https上,而次要站点在http上,所以您可以使用以下内容

代码语言:javascript
运行
AI代码解释
复制
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {  

        ##
        # Basic Settings
        ##

        server {
            listen 80 default;
            server_name _;
            return 301 http://secondary.site.com;
        }

        server {
                listen  443 ssl;
                server_name  main.site.com;
                ssl_certificate         /etc/nginx/certificates/cert.pem;
                ssl_certificate_key  /etc/nginx/certificates/kry.pkey;
                ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers  !EDH:!AECDH:!ADH:!DSS:!RC4:ECDSA:HIGH:+3DES;
                ssl_prefer_server_ciphers on;
                ssl_ecdh_curve secp384r1; #courbe ECDH
                add_header Strict-Transport-Security "max-age=31536000";

                location / {
                        proxy_pass          http://127.0.0.1:3000;
                        proxy_set_header    Host             $host;
                        proxy_set_header    X-Real-IP        $remote_addr;
                        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header    X-Client-Verify  SUCCESS;
                        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
                        proxy_read_timeout 1800;
                        proxy_connect_timeout 1800;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                }
        }

        server {
                listen       80;
                server_name  secondary.site.com;
                location / {
                        proxy_pass          http://127.0.0.1:9000;
                        proxy_set_header    Host             $host;
                        proxy_set_header    X-Real-IP        $remote_addr;
                        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                        proxy_set_header    X-Client-Verify  SUCCESS;
                        proxy_set_header    X-Client-DN      $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
                        proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
                        proxy_read_timeout 1800;
                        proxy_connect_timeout 1800;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                }
        }



        # set client body size #
        client_max_body_size 20M;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

}

在这个secondary.site.com中,只侦听端口80,而main只侦听端口https。我有一个默认的重定向任何http流量直接到二级网站。但是您可以根据您的需求定制它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46847668

复制
相关文章
Nginx启用https访问
摘 要 nginx启用ssl加密访问。 由于本站全面开启https协议访问,小编决定将实践过程记录下来,方便后来人。 什么是https? https 全称:Hyper Text Transfer Pr
天策
2018/06/22
6.8K2
Nginx配置http访问强制跳转到https
本站文章除注明转载/出处外,皆为作者原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Cheng_Blog
2022/02/25
1.6K0
nginx跨域访问配置_cors跨域访问不了
跨域概念 简单来说:两个url只要协议、域名、端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题。
全栈程序员站长
2022/11/15
4.6K0
nginx跨域访问配置_cors跨域访问不了
PHP 实现访问HTTP时自动跳转至HTTPS
刚刚给网站安装上了SSL证书,并且可以成功使用HTTPS进行访问。可一会儿就遇到了非常严重的问题,那就是在访问HTTP时并不会自动跳转至HTTPS。于是我百度,Google了好久,都没能够找到适用于虚
Vicsh
2018/05/16
1.5K0
nginx配置跨域访问,无法生效_页面跨域访问
由于浏览器同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制。即会出现跨域请求禁止。
全栈程序员站长
2022/11/10
7.7K0
nginx支持跨域访问
1,进入nginx的html目录  vim ./crossdomain.xml  具体路径: /usr/local/nginx/html/crossdomain.xml  2,在crossdomain
hbbliyong
2018/03/29
3.8K0
nginx支持跨域访问
Tomcat创建HTTPS访问,java访问https
一 https和ssL HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP
Ryan-Miao
2018/03/13
2.4K0
Tomcat创建HTTPS访问,java访问https
Zabbix 利用 Nginx 实现 HTTPS 访问
在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,加密的详细内容依赖SSL。
Kevin song
2020/06/09
2.1K0
Zabbix 利用 Nginx 实现 HTTPS 访问
配置DataEase使用https访问
1. 安装Nginx yum install gcc pcre-devel openssl-devel -y && \ cd /opt && \ wget http://nginx.org/download/nginx-1.20.2.tar.gz && \ tar -zxvf nginx-1.20.2.tar.gz && \ cd nginx-1.20.2 && \ ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-h
范一刀
2022/04/13
1.5K0
restTemplate访问https
序 本文简述一下怎么使用restTemplate来访问https。 maven <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> 这里使用httpclient的factory 配置 @
code4it
2018/09/17
7K0
httpclient访问https
本文从spring cloud netflix zuul里头摘出httpclient访问https/http的源码,展示一下怎么用httpclient去访问https。
code4it
2018/09/17
1.1K0
跨域与跨域访问_如何实现跨域访问
跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域
全栈程序员站长
2022/11/10
5.6K0
Ubuntu Docker 配置 Tomcat 和 Nginx 使用 HTTPS 访问
Ubuntu安装 Docker 使用脚本自动安装 curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
星哥玩云
2022/07/13
6850
httpclient访问https
本文从spring cloud netflix zuul里头摘出httpclient访问https/http的源码,展示一下怎么用httpclient去访问https。
全栈程序员站长
2022/07/20
7560
Nginx 配置 OCSP Stapling 优化 HTTPS 访问
由于国内 VPS 服务器访问 OCSP 服务器可能会被污染而导致失败,所以添加resolver来解决此问题.
用户8851537
2021/07/20
1K0
MinIO+Nginx开启https域名访问
出现如上图所示,说明域名已经解析到对应的IP地址,会有人问:去哪里添加解析,答:去购买域名的厂商控制台,比如你的域名是阿里云注册的,就登陆阿里云控制台有相关解析操作流程
itze
2023/01/08
18.6K3
MinIO+Nginx开启https域名访问
如何使用 .htaccess 强制访问 HTTPS
如果你为你的域名安装 SSL 证书,你的下一步应该是配置应用将所有的网络流量通过 HTTPS 传输。
雪梦科技
2020/07/08
3.9K0
Nginx允许跨域访问的配置问题
如今前后端分离的模式,越来越成为很多团队的选择,通过分离前后端的工作,是的双方更能关注于自己核心的工作领域,只需要通过相应的API接口进行交互。
zhangdd
2018/08/01
2.1K0
springboot(22)同时支持http和https访问
关于spring boot同时支持http和https访问,在spring boot官网73.9已经有说明文档了,同样在github上也有官网的例子。 在这里,我向大家讲述一下,我是怎么实现的。 keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 1.-storetype 指定密钥仓库类型 2.-keyalg 生证书的算法名称,RS
IT架构圈
2018/06/01
3.9K0
php使用curl访问https示例
今日在做一个项目,需要curl获取第三方的API,对方的API是https方式的。 之前使用curl能获取http请求,但今天获取https请求时,返回的内容总是为空,查阅资料后发现用curl访问https需要添加以下两行代码: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 封装成
夏时
2018/06/26
2.4K0

相似问题

htaccess主域到https,子域访问http

20

主域使用https,所有子域使用http

122

https表示主域,http表示子域。

11

当域在Nginx中使用https时,如何将http用于子域

13

使用https/http将所有域访问到一个域

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文