Nginx配置HTTPS和IPV6(保姆级教程)
教程背景:负责的后台系统要求由原来的http访问升级成https加密访问
一、Nginx的安装
地址:https://nginx.org/en/download.html
-
选择相关版本的安装包下载到本地文件夹中,通过远程工具上传到服务器空间
-
解压安装包,进入解压后的Nginx安装包目录
tar -zxvf nginx-1.21.2.tar.gz
cd nginx-1.21.2
-
安装nginx “/data/nginx” 为安装路径 ,这里与nginx安装包路径区分开来,可以将安装路径替换成自定义路径
./configure --prefix=/data/nginx
make&&make install
-
进入nginx安装目录下的sbin文件夹下,输入命令检查nginx是否安装成功
./nginx -V
出现nginx版本信息即为安装成功
-
启动nginx,通过浏览器访问您的服务器的IP地址或域名来验证Nginx是否正常工作
./nginx
二、Nginx的相关配置
1. 配置https与ipv6
写在前面:配置https需要nginx拥有ssl模块,配置ipv6需要nginx拥有支持ipv6的模块,一般来说默认安装的Nginx是不含这两个模块的,在配置https和ipv6前需要检查相关模块的安装情况,如果出现 (configure arguments: --with-http_ssl_module --with-ipv6), 则已安装(下面的步骤可以跳过)
./nginx -V
(1)安装ssl模块与ipv6模块
写在前面:安装ssl模块的前提是nginx已经安装完成,并且可以通过http可以正常访问,如果您的Nginx没有安装完成,在第一部分教程中安装Nginx时添如下参数,其余步骤如上所示,一步到位即可
./configure --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6
如果Nginx已经安装完成,打算添加上述两个模块,那么可以按照下面的步骤进行安装配置
- 进入
nginx安装包解压后的目录('/data/nginx-1.21.2')
下,这里不是原nginx安装目录('/data/nginx'
)
./configure --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6
切记!!!不要执行make install,否则会重新安装nginx
make
- 上述操作执行完成以后,你的目录下会出现objs文件夹,文件夹内存在nginx文件,如图:
- 将原安装目录下sbin文件夹下的
nginx文件
备份后,替换成上述文件夹内的nginx文件
./data/nginx/sbin/nginx -s stop
cp -r /data/nginx-1.21.2/objs/nginx /data/nginx/sbin/nginx
- 成功之后,进入到nginx安装目录下,查看相关模块信息
如上所示,ipv6模块和ssl模块都已经添加完毕,为下面配置https和ipv6做好准备。
(2) 生成ssl证书
写在前面:ssl证书可以从阿里购买或者免费申请一年,这里我介绍的的是第二种方法,利用openssl生成自签名证书
- 操作准备,检查是否已安装openssl
opnessl version
- 创建ssl证书存放目录,如
/data/nginx/ssl
,并切换至该目录下,输入如下命令:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx.key -out nginx.crt
- 创建ssl证书过程中会按照流程回答一些问题
- 在该目录下生成一个2048位的RSA私钥文件(nginx.key)和一个自签名证书文件(nginx.crt)
(3)配置Nginx
写在前面:nginx是一个高性能、轻量级的Web服务器和反向代理服务器,拥有易配置、正反向代理、负载均衡等优点
下面是关于nginx配置https和ipv6中nginx.conf
的详细内容
# 设置监听端口,包括IPv6
server {
listen [::]:80;
listen [::]:443 ssl;
server_name localhost;
# SSL证书和私钥的路径
ssl_certificate /data/nginx/ssl/nginx.crt;
ssl_certificate_key /data/nginx/ssl/nginx.key;
# 配置其他Nginx设置
# 配置反向代理或静态文件服务
location / {
}
}
配置完成后,重启nginx
sudo ./nginx -s reload
三、踩坑合集
安装配置教程虽然简单,但是在实际操作过程中会因为软硬件环境的不同而出现各种意想不到的意外
-
https默认端口为443,所以配置https必须保证服务器的443端口可以通过防火墙
这里大家可能会遇到一种情况:服务器防火墙没有开,443端口却访问不了
参考博客:http://t.csdnimg.cn/Xqoh1
-
Nginx和Openssl的版本会存在是否适配的问题
43,所以配置https必须保证服务器的443端口可以通过防火墙
这里大家可能会遇到一种情况:服务器防火墙没有开,443端口却访问不了
参考博客:http://t.csdnimg.cn/Xqoh1
- Nginx和Openssl的版本会存在是否适配的问题