您的位置:首页 > 理论基础 > 计算机网络

Centos 7 下 Nginx反向代理https配置

2018-01-19 00:07 543 查看

需求来源

一个Java开源博客solo,内置jetty,同时也可以容器部署,之前是部署在Tomcat容器里面的,今天看到腾讯云卖证书广告,突然想到https出来这么久,自己还没有尝试过,还可以借此机会学习一下如何部署https证书和nginx反向代理,之后做的一些网站可能都需要用的上。

技术选择

因为solo可用内置端口也可以部署到容器里面,所以我们这里可以选择通过Tomcat配置证书,也可以使用nginx监听80端口,监听来自www.qfql.me 域名的请求代理到本地8080端口,在nginx上通过监听443端口配置https证书。

当然了,最后我们选择了后者,这样的话对以后服务器上的应用影响更小一点,未来无论我们有什么架构的web程序,都可以开不同的端口通过nginx代理过去,如果使用Tomcat容器的话就只能部署Java项目了。

部署安装

centos 7 下的 nginx安装

nginx官网下载压缩包到本地,不推荐yum install 形式的安装,ubantu 14.04+下是会自带ssl模块的,centos 7 不知道会不会自带(我是之前yum装的,结果可以代理过去,https死活无法访问,后来我又把原来的卸载了重新编译安装的)。

如果你在你要安装的机器上可以执行下面命令

**wget [http://nginx.org/download/nginx-1.12.2.tar.gz](http://nginx.org/download/nginx-1.12.2.tar.gz)**


yum install gcc-c++


yum install -y pcre pcre-devel


yum install -y zlib zlib-devel


yum install -y openssl openssl-devel


上面四个install如果本机没有的话要装上,nginx依赖编译、正则、压缩、ssl等,重点是ssl,一定要装上,不然后面编译ssl模块的时候会报错。

然后解压之前下载的nginx安装包,
tar -zxvf nginx-1.12.2.tar.gz


进入到目录中
cd nginx-1.12.2


配置编译模块
./configure --with-ipv6 --with-http_ssl_module


make


make install


若果没报错的话就安装完成了,在启动nginx之前先去掉nginx配置文件第一行user nobody前面的注释,不然无法运行,我的配置文件路径在
/usr/local/nginx/conf/nginx.conf


执行
/usr/local/nginx/sbin/nginx
就可以启动nginx了,访问这个机器的80端口就会看到nginx的欢迎页面了

https证书配置

先要申请一个免费证书,网上搜一搜就有了,我是在腾讯腾讯https证书申请申请的免费证书,备案过的域名很快就下来了,一个小时差不多就弄好了

在申请下来的证书文件中你会拿到两个后缀名为crt和key的文件,把这两个文件上传到你的服务器上保存好

然后编辑 nginx的nginx.conf文件配置,在配置文件的http配置中添加如下两个server,把对应的域名和证书地址提换成你的就可以了

server {
listen       80;
server_name  www.qfql.me;
rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https
return 301 https://$http_host$request_uri; }
server {
listen       443 ssl;
server_name  www.qfql.me;
ssl_certificate      /Nginx/1_www.qfql.me_bundle.crt;
ssl_certificate_key  /Nginx/2_www.qfql.me.key;
ssl_session_cache    shared:SSL:1m;
ssl_session_timeout  5m;
ssl_ciphers  HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers  on;
location / {
proxy_pass  http://127.0.0.1:8080/; }
}


修改完配置文件以后执行nginx -t测试配置文件是否正确,然后nginx -s reload生效,就可以愉快的使用https了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息