安装 Nginx
nginx 的一些模块需要依赖一些 lib 库,在安装 nginx 之前,须先安装这些 lib 库,比如常见依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel 所以执行如下命令安装:
$ yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl--devel
# 下载
$ wget https://nginx.org/download/nginx-1.22.1.tar.gz
# 解压文件到opt目录下
$ tar -xvzf nginx-1.22.1.tar.gz -C /opt
# 在/opt/nginx/目录下执行
# 对nginx添加ssl模块,默认是不添加的
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make
如果是初次安装需要执行 make install,非初次安装切记不要执行 make install,否则会重新安装nginx。
上述操作执行完成以后,你的目录下会出现 objs 文件夹,文件夹内存在 nginx 文件,如图:
接下来使用新的 nginx 文件替换掉之前安装目录 sbin 下的 nginx,注意这里的替换的时候可以先将之前的文件备份下,停掉nginx服务
#停止nginx服务
$ ./nginx -s stop
#替换之前的nginx
$ cp /opt/nginx/objs/nginx /opt/nginx/sbin
成功之后,进入到 nginx 安装目录下,查看 ssl 是否成功。
#注意这里是大写的V,小写的只显示版本号
$ ./nginx -V
nginx version: 1.22.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
说明已经开启。
配置 ssl 证书
将下载好的证书(证书一般是crt或pem文件和key文件,这里名字可以随便改)上传到服务器,我将证书放在了 config.d/cert 目录下。
编辑 Nginx 根目录下的 nginx.conf 文件,修改内容如下:
server {
listen 80;
server_name you.domain.com;
#将请求转成https
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name you.domain.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate you.domain.com.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key you.domain.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径
root html;
index index.html index.htm;
}
}
配置完成后,检查一下nginx配置文件是否可用,有 successful 表示可用。
# 检查nginx配置文件
$ nginx -t
配置正确后,重新加载配置文件使配置生效:
# 重启
$ ./nginx -s reload
至此,nginx 的 https 访问就完成了,并且通过 rewrite 方式把所有 http 请求也转成了 https 请求,更加安全。
nginx 命令详解
- -?,-h:查看帮助
- -v:显示版本信息并退出
- -V:显示版本和配置选项信息,然后退出
- -t:检测配置文件是否有语法错误,然后退出
- -T:检测配置文件语法,打印它并退出
- -q:在配置测试期间,禁止显示非错误信息
- -s:发送信号给主进程,stop 强制退出,quit 优雅的退出,reopen 重启,reload 重新加载配置
- -p:设置 nginx 目录
- -c:指定启动使用的配置文件(常用)
- -g:在配置文件之外设置全局指令
常用命令
# 启动
$ ./nginx
# 此方式相当于先查出 nginx 进程 id 再使用 kill 命令强制杀掉进程
$ ./nginx -s stop
# 此方式是待 nginx 进程处理任务完毕进行停止
$ ./nginx -s quit
# 重启
$ ./nginx -s reload
# 查询nginx进程
$ ps aux|grep nginx
# 检查指定配置文件
$ ./nginx -t -c /opt/nginx/conf.d/you.domain.conf
# 查找并杀死所有 nginx 进程
$ ps aux | grep nginx |awk '{print $2}' | xargs kill -9