文档章节

Nginx 配置多域名 http转https

MrPei
 MrPei
发布于 04/11 15:49
字数 661
阅读 235
收藏 1

之前实现了用Let ’ s Encrypt 生成SSL证书,现在将全部的域名强制实现https访问

一.备份之前配置文件,创建新的配置文件

1.进入nginx conf目录,并创建备份文件夹

cd /user/local/nginx/conf

mkdir vhost.conf.bak

2.将旧的配置文件移动到备份文件夹

mv vhost/* conf.vhost.bak/

3.创建新的配置文件

创建主配置文件负责监听80端口并转发请求

vim index.host.conf

内容如下:

server {
    listen 80;
    server_name abc.cn www.abc.cn jenkins.abc.cn mymaven.abc.cn dubboadmin.abc.cn;
    rewrite ^(.*) https://$host permanent;
}

创建各域名配置文件监听443端口(可以按域名分开,也可以写一个文件里,我为了方便写在一个文件里)

vim https.host.conf

内容如下:

 server {
        listen       443;
        server_name  www.mrpei.cn  mrpei.cn;

        ssl on;
        ssl_certificate      /etc/letsencrypt/live/mrpei.cn-0002/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/mrpei.cn-0002/privkey.pem;
        
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
			proxy_pass http://112.74.102.226:8080/;
            proxy_set_header Host       $http_host;
			proxy_set_header X-Real-IP $remote_addr;  
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
			proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
 server {
        listen       443;
        server_name  jenkins.mrpei.cn;

        ssl on;
        ssl_certificate      /etc/letsencrypt/live/mrpei.cn-0002/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/mrpei.cn-0002/privkey.pem;
        
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
			proxy_pass http://112.74.102.226:8300;
			proxy_set_header Host       $http_host;
			proxy_set_header X-Real-IP $remote_addr;  
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
			proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
	
 server {
        listen       443;
        server_name  mymaven.mrpei.cn;

        ssl on;
        ssl_certificate      /etc/letsencrypt/live/mrpei.cn-0002/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/mrpei.cn-0002/privkey.pem;
        
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
			proxy_pass http://112.74.102.226:8081;
			proxy_set_header Host       $http_host;
			proxy_set_header X-Real-IP $remote_addr;  
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
			proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
	
 server {
        listen       443;
        server_name  dubboadmin.mrpei.cn;

        ssl on;
        ssl_certificate      /etc/letsencrypt/live/mrpei.cn-0002/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/mrpei.cn-0002/privkey.pem;
        
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
			proxy_pass http://127.0.0.1:8080;
			proxy_set_header Host       $http_host;
			proxy_set_header X-Real-IP $remote_addr;  
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
			proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
	

二.测试并启用新的配置文件

返回nginx根目录,执行配置文件测试

cd ../
sbin/nginx -t

显示如下输出表示测试通过

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

以新的配置文件重启Nginx

sbin/nginx -s reload

三.再次访问之前的地址 看到浏览器自动转到https

四.出现的问题

1.有的域名浏览器地址栏https报红,提示连接不安全

这是因为有的域名并没有加入之前的申请证书

再次执行申请证书命令并-d追加所有需要的域名

cd /usr/server/sslKey/letsencrypt/
./letsencrypt-auto certonly --standalone --email 756487195@qq.com -d abc.cn -d jenkins.abc.cn -d mymaven.abc.cn -d dubboadmin.abc.cn

特别注意:如果没有删除以前的公钥私钥证书 生成结果会生成新的两个文件 注意修改 Nginx 配置文件对应的文件名

如下图:

修改位置:

ssl_certificate      /etc/letsencrypt/live/mrpei.cn/fullchain.pem;
ssl_certificate_key  /etc/letsencrypt/live/mrpei.cn/privkey.pem;

修改为:

ssl_certificate      /etc/letsencrypt/live/mrpei.cn-0002/fullchain.pem;
ssl_certificate_key  /etc/letsencrypt/live/mrpei.cn-0002/privkey.pem;

...

 

 

 

© 著作权归作者所有

共有 人打赏支持
MrPei
粉丝 5
博文 64
码字总数 28122
作品 0
朝阳
高级程序员
私信 提问
nginx启用HSTS以支持从http到https不通过服务端而自动跳转

最近对我的个人网站启用了Https,所以想设置http默认自动转https访问的功能,但又不想总让服务端做转发操作,那样浪费资源。那么有什么好的办法呢? 302跳转 通常将 HTTP 请求 302 跳转到 HT...

Tenderrain
06/06
0
0
nginx强制使用https访问(http跳转到https)可行

最近用 在http的server里增加 ERRTOOMANY_REDIRECTS after adding ssl on nginx 下面这个方法可以彻底解决 转自https://www.cnblogs.com/yun007/p/3739182.html 需求简介 基于nginx搭建了一个...

飞翔的熊blabla
08/24
0
0
nginx强制使用https访问(http跳转到https

需求简介 基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com,但是很多用户不清楚https和http的区别,会很容易敲成http://test.com,这时会报出404错误,所以我需要做基于test....

吴梦涵
07/09
0
0
Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut
06/23
0
0
http网站快捷免费升级到https

网站一直光着身子跑,这次我要加一件衣服 —— Java面试必修 前言 能看到这篇文章我想大家对http和https都不陌生,我也不做过多阐述,直接开干 工具 已备案域名一个 CentOS 7 Nginx Let's E...

阿郎_
09/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python监控服务器实现邮件微信报警[未测试]

本文中笔者暂时实现的只有cpu和内存的监控,python可以监控许多的主机信息,网络,硬盘,机器状态等,以下是代码的实现,代码可以实现windows和linux的监控。 实验环境:Ubuntu16.04和windo...

dragon_tech
14分钟前
1
0
Spring Boot 返回 JSON 数据,一分钟搞定!

在 WEB 项目中返回 JSON 数据是常见的交互形式,在 Spring Boot 中这一切都变得十分简单。So easy!!! 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启...

Java技术栈
20分钟前
2
0
保护Hadoop集群三大方法

大约在两年前,开源数据库解决方案MongoDB以及Hadoop曾遭受过大量恶意攻击,这些攻击后被统称为“勒索软件”,因为其攻击者会擦除或加密数据,然后向被攻击者索要资金以恢复数据。自今年以来...

linuxCool
26分钟前
1
0
开源 java CMS - FreeCMS2.8会员我的留言

项目地址:http://www.freeteam.cn/ 我的留言 从左侧管理菜单点击我的留言进入。在这里可以查看当前登录会员的所有留言记录。 查看留言 点击留言标题可以查看留言详细内容。 删除留言 选择留...

freeteam
46分钟前
2
0
OSChina 周五乱弹 —— 这就是不要女朋友的理由

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @狄安娜的猫 :分享丁家鑫的单曲《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 手机党少年们想听歌,请...

小小编辑
今天
990
22

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部