CentOS7 Nginx配置ssl证书实现https安全访问
目录
一、Nginx的安装与配置
安装步骤
二、SSL证书获取
三、Nginx配置
前题条件,拥有服务器与可以解析到该服务器的自己的域名。
一、Nginx的安装与配置
若已安装好了Nginx,则需查看自己的Nginx是否开启了SSL的模块功能:
./nginx -V
显示如上,则代表ssl功能已开启,否则可能出现以下错误提示:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx.conf:%
解决方案见:
https://www.cnblogs.com/laifw/p/11193537.html
安装步骤
1.官网下载nginx压缩包
http://nginx.org/en/download.html
我们先去官网下载一个最新稳定版的nginx
1.安装nginx前,我们首先要确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel软件,
yum install gcc-c++
yum -y install zlib zlib-devel pcre pcre-devel
yum -y install openssl openssl-devel
2.切换到需要安装nginx的目录,我这里在/usr/local/ ,然后下载nginx: wget https://nginx.org/download/nginx-1.22.1.tar.gz
## 如果已安装nginx,则remove掉 yum remove nginx
3.解压下载好的nginx包:tar -zxvf nginx-1.22.1.tar.gz
4.开始安装:/usr/local/nginx-11.22.1 --是nginx的解压后的源码包
执行安装: ./configure --prefix=/usr/local/nginx
安装https认证模块(上文未安装这个导致使用https协议保存):./configure --with-http_ssl_module
再执行:make
最后执行:make install
查看安装成功:
进入安装后的包 :
最后进入sbin/nginx目录,./nginx启动即可
5.配置nginx https代理请求:
server {
server_name yuming.cn; ##需要代理的域名
listen 443 ssl;
ssl on; ##如果安装的是新版本下不需要
ssl_certificate certPath/cert.pem; ##SSL证书地址
ssl_certificate_key certPath/cert.key;##SSL证书公钥
ssl_session_timeout 3m;##超时时间
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://120.xx.xx.xx:9006; ##这里写需要转发的项目地址
}
}
二、SSL证书获取
可以使用FreeSSL首页 - FreeSSL.cn一个提供免费HTTPS证书申请的网站获取免费的证书:
https://www.cnblogs.com/nuccch/p/16483136.html
三、Nginx配置
将获取的ssl证书放到服务器上,配置相应的路径。
server {listen 80;#填写绑定证书的域名server_name dragonwu.xyz;#charset koi8-r;#access_log logs/host.access.log main;#强制将http的URL重写成httpsreturn 301 https://$host$request_uri;}server {listen 443 ssl;server_name dragonwu.xyz; #你的域名ssl_certificate /usr/local/ssl/dragonwu.xyz_cert_chain.pem; #证书ssl_certificate_key /usr/local/ssl/dragonwu.xyz_key.key; #证书ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root html;index index.html index.htm;}}
Nginx服务器重新加载:
./nginx -s reload
注意事项:443端口一定要打开,之前我就是因为443端口被防火墙保护,一直访问不到,开放443端口即可!
总结完毕!