Nginx 配置多个SSL域名指向不同端口

Nginx 配置多个SSL域名指向不同端口



前言

提示:系统版本ubuntu 16.0.4,以下配置仅供参考

项目开发过程中,我们同一个服务器都会存放多个项目,每个项目都会有不同的域名地址,因此本文记录如何配置多个域名、多个ssl证书以及http域名自动跳转https域名问题。


说明:nginx配置文件每行具体是干嘛的就不做介绍了,配置文件的其他配置也不放了,直接介绍使用方法

1、nginx 配置 多个http域名,多个项目

代码如下(示例):server_name配置不同项目域名,通过不同代理跳转到指定项目路径

    # 第一个项目
    server {
        listen       80;
        server_name  www.abc.com;     # 网址一
        location / {
            root   html;
            index  index.html index.htm;
	    proxy_pass http://127.0.0.1:8081/;    # 项目端口号
        }
        error_page   500 502 503 504  /upgrade.html;
        location = /upgrade.html {
            root   html;
        }
    }
	# 第二个项目
	server {
        listen       80;
        server_name  www.def.com;   # 网址二
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8082/;   # 项目端口号
        }
        client_max_body_size 50m;
        error_page   500 502 503 504  /upgrade.html;
        location = /upgrade.html {
            root   html;
        }
    }

2、nginx 配置 多个SSL域名指向不同端口

代码如下(示例):这种情况属于1的升级,对步骤1的两个项目域名进行证书加密。
监听的端口为443,如何443没开启,百度下如何开启ssl端口,增加如下配置

	# 第一个项目
    server {
        listen       443 ssl;
        server_name  www.abc.com;   # 域名一
        ssl_certificate      xxxxxxx.pem;
        ssl_certificate_key  xxxxxxx.key;  # 自己申请的ssl证书,以阿里为例直接可以申请免费的
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        client_max_body_size 50m;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8081/;
        }
        error_page   500 502 503 504  /upgrade.html;
        location = /upgrade.html {
            root   html;
        }
    }
   	# 第二个项目
	server {
        listen       443 ssl;
        server_name  www.def.com;   # 域名二
        ssl_certificate      xxxxxxx.pem;
        ssl_certificate_key  xxxxxxx.key;  # 这是www.def.com域名的ssl证书
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        client_max_body_size 50m;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://127.0.0.1:8082/;
        }
        error_page   500 502 503 504  /upgrade.html;
        location = /upgrade.html {
            root   html;
        }
    }

到这里两个项目的证书已经配置完成了,使用 https://域名 已经可以访问,但如果直接使用域名访问,还是http格式的,下面配置一下http自动跳转https

3、nginx 配置 http域名主动跳转https域名

代码如下(示例):以第一个项目为例,其他项目按照这个方式改变就可以。
将第一个项目之前配置的http方式修改一下

	# 原来第一个项目 http域名跳转
    server {
        listen       80;
        server_name  www.abc.com;     # 网址一
        location / {
            root   html;
            index  index.html index.htm;
	    proxy_pass http://127.0.0.1:8081/;    # 项目端口号
        }
        error_page   500 502 503 504  /upgrade.html;
        location = /upgrade.html {
            root   html;
        }
    }

修改之后的,这样再访问www.abc.com会直接跳转到加密网址

   server{
		listen       80; 
		server_name  www.abc.com;  # 域名一
		rewrite ^(.*) https://$server_name$1 permanent;   #重写地址
    }

http自动跳转https方式有多种
1、强制重写成安全地址(本文)
2、使用301重定向的方式将 http 的请求重定向到 https 上

   server{
		listen       80; 
		server_name  www.abc.com;  # 域名一
		return 301 https://$server_name$request_uri;   # 重定向
    }

3、使用error_page,将http和https的监听配置写在同一个server块中,相当于将上面的两个server进行整合,包括其他配置也写在同一个server中

   server {
    listen 80;
    listen 443 ssl;
    server_name www.abc.com;
    ssl on;
    ssl_certificate      xxxxxxx.pem;
    ssl_certificate_key  xxxxxxx.key;  # 这是www.abc.com 域名的ssl证书
    # 其他配置项,这里省略
    error_page 497 https://$server_name$request_uri;
}

提示:配置完成后,先关闭nginx服务进程,再重新启动!!!!因为有时候 sudo nginx -s reload 重新加载会不起作用。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用nginx的代理转发功能来实现多个服务域名共用80端口的需求。你可以在nginx配置文件中添加多个server块,每个server块对应一个服务域名。在每个server块中,使用listen指令指定监听的端口和server_name指令指定服务域名。然后在location块中配置服务的根目录和索引文件。以下是一个示例配置文件: ``` # nginx.conf # 服务1配置(监听books二级域名) server { listen 80; server_name books.summergao.com; location / { root /usr/local/summergao/front/books; index index.html index.htm; } } # 服务2配置(监听test二级域名) server { listen 80; server_name test.summergao.com; location / { root /usr/local/summergao/front/test; index index.html index.htm; } } ``` 在上述配置中,我们通过两个server块分别配置了两个服务域名。每个server块中的location块指定了服务的根目录和索引文件。你可以根据实际需求修改配置文件中的路径和域名。这样,nginx就可以根据不同域名将请求转发到对应的服务上,实现多个服务域名共用80端口的效果。 #### 引用[.reference_title] - *1* [Nginx配置多个服务共用80端口](https://blog.csdn.net/qq_25231683/article/details/120762568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Nginx配置多个服务域名解析共用80端口](https://blog.csdn.net/weixin_44569100/article/details/126179849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值