前言
本文将介解析二级域名并配置ssl证书,http 重定向 https 。
注意:一定要看完这篇文章才能开始,当安装出现一些报错时,看最下面的报错处理情况。
1. 解析域名
看下面一张图就行了。
2. ssl证书申请
解析很简单,我们接着申请ssl证书。
注册域名的时候申请免费的ssl证书,可以申请一个免费的二级域名证书,必须保持和上面的二级域名一致。
证书下载nginx ,我们会得到key和pem两个文件
3. 安装nginx
3.1 安装各种依赖
#gcc安装,nginx源码编译需要
yum install gcc-c++
#PCRE pcre-devel 安装,nginx 的 http 模块使用 pcre 来解析正则表达式
yum install -y pcre pcre-devel
#zlib安装,nginx 使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel
#OpenSSL 安装,强大的安全套接字层密码库,nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http)
yum install -y openssl openssl-devel
3.2 下载nginx源
直接官网下载【官网链接】
使用wget命令下载(推荐)
#下载版本号可根据目前官网最新稳定版自行调整
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
#根目录使用ls命令可以看到下载的nginx压缩包,然后解压
tar -zxvf nginx-1.16.1.tar.gz
#解压后进入目录
cd nginx-1.16.1
4. 配置ssl
安装时直接./configure是不会安装ssl模块的,需要加上
依次执行如下命令:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
make
make install
nginx的ssl配置
#进入nginx配置文件目录,找到nginx的配置文件nginx.conf
cd /usr/local/nginx/conf/
#直接修改
vi nginx.conf
server {
listen 443 ssl;
server_name www.xxx.com;
# ssl on;
ssl_certificate /etc/ssl/certs/证书名.pem;
ssl_certificate_key /etc/ssl/certs/证书名.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8080;
}
}
证书一定要放在:/etc/ssl/certs/证书名.pem;不然会报错。
www.yy.xxx.com 为你的二级域名。
5. 配置域名映射
#进入nginx配置文件目录,找到nginx的配置文件nginx.conf
cd /usr/local/nginx/conf/
#直接修改
vi nginx.conf
server {
listen 80;
server_name www.yy.xxx.com;
#charset koi8-r;
#access_log logs/host.access.log main;
rewrite ^(.*)$ https://$host$1 permanent; #用于将http页面重定向到https页面
location / {
proxy_pass http://localhost:8080;
}
6. 重新加载配置文件
#修改完成后,重新加载配置文件
cd /usr/local/nginx/sbin/
./nginx -s reload
7. 部分报错处理
警告:[warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/vhost/api.conf:16
nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/vhost/api.conf:16
解决方法:ssl on 改为如下:
#listen 443; 修改该行信息,如下即可
listen 443 ssl;
server_name xxx.xxxx.com;
#ssl on; 注释该行信息
7.2 [error] open() "/usr/local/nginx/logs/nginx.pid" failed
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed
解决方法:
#执行命令
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
使用nginx -c的参数指定nginx.conf文件的位置
如果出现:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
killall -9 nginx 杀掉nginx 进程 然后重启就行了。
另外 还有一个很重要的可能 ps -ef | grep nginx 看下主目录 是哪里 是不是装了两个可恶的 Nginx 哈哈nginx
8. 小结&参考资料
小结
这种方法的二级域名不用备案(前提一级域名已经备案),且具有ssl证书,使用真的很棒。
Comments | NOTHING