本文章基于Linux操作系统演示。
准备工作:有公网IP的服务器(CentOS7)、申请一个域名、为域名申请SSL证书、将服务器的公网IP和域名进行绑定。
一、下载安装Nginx
Nginx下载网址:http://nginx.org/en/download.html
百度网盘链接:https://pan.baidu.com/s/1o2riynHpHobwOTF9C9R0RA
提取码:coff
- 安装c++编译器和nginx需要的依赖,否在在安装的时候会报错!
#下载依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
- 将下载的安装包上传到Linux服务器上,一般都会上传到opt目录下,解压安装包
#解压到/usr/local目录下
tar -zxvf nginx-1.20.1.tar.gz -C /usr/local
#进入/usr/local目录下
cd /usr/local
#感觉名字太长了可以改下名字
mv ./nginx-1.20.1 nginx
- 进入nginx的目录,初始化并编译安装nginx,这里要注意一下,初始化的一些路径一定要按照自己安装nginx的目录来!
#进入nginx的目录,我的我改了名字 没改名的按照自己的目录进入
cd /usr/local/nginx
#初始化nginx
./configure --prefix=/usr/local/nginx/ --pid-path=/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre --with-stream
#编译
make
#安装
make intall
- 启动nginx
#进入nginx的sbin目录下
cd /usr/local/nginx/sbin
#启动nginx
./nginx
- 访问Nginx 默认端口是80,直接在浏览器输入服务器的ip,出现下图所示的界面,说明nginx安装成功。
注意:如果访问失败,可能是防火墙没开80端口,也有可能是启动的时候80端口占用。本文主要是讲解怎么配置https协议的,在这里我就不做太多的赘述了,端口占用可以找到nginx的配置文件改一下监听的端口号,防火墙开放端口在搭建gitlab文章中也有提到
二、配置Https协议
首先要从阿里云上为域名申请一个SSL证书,也就是https协议。
然后将证书文件和证书密钥文件下载到本地,然后解压 一定要先解压,再上传至服务器。一般都会放在/usr/local/ssl目录下,ssl目录需要自己创建。
- 找的nginx的配置文件,这里最好是备份一下配置文件,给自己留条后路。
- 打开后找到 HTTPS server模块,一般都在最下面给注释掉了
server {
listen 443 ssl; #https协议默认端口443
server_name [自己服务器IP绑定的域名];
ssl_certificate /usr/local/ssl/test.com.pem; #需要将test.com.pem替换成已上传的证书文件的名称。
ssl_certificate_key /usr/local/ssl/test.com.key; #需要将test.com.key替换已上传的证书密钥文件的名称。
ssl_session_cache shared:SSL:1m;
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 / {
index index.html index.htm;
}
- 如果想配置http协议指向https,可以参考下面(选配),如果不想配置可以直接保存退出
server {
listen 80;
server_name [换成证书绑定的域名]; #和上面https一样的
#也可以直接指向配置的https协议域名
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
}
- 配置完毕!保存退出,重新启动nginx
#进到nginx的sbin目录下
cd /usr/local/nginx/sbin
#重启nginx
./nginx -s reload
- 在浏览器中直接输入你配置的域名,出现下图所示的界面说明配置成功
如果没出现上面的界面,排查一下问题
1、443端口未开放
2、如果没配置http指向https,用http协议访问也是不行的 要用https协议
3、域名未在工信部备案或者在备案中
- 端口开放
#开发443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
#重启防火墙
firewall-cmd --reload