1.下载文件
yum install -y wget wget http://nginx.org/download/nginx-1.20.0.tar.gz
2.安装依赖
yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel
1.解压文件
解压
tar -xvf nginx-1.20.0.tar.gz -C /usr/local
2.configure
cd /usr/local/nginx-1.20.0/ ./configure --prefix=/usr/local/nginx --with-stream --with-http_ssl_module --with-stream_ssl_preread_module --with-stream_ssl_module
–with系列参数来支持增加模块,视情况增减,我这里加了四个,分别可以做tcp转发,ssl协议支持,正向代理域名获取等支持。
–with-stream 4层转发
–with-http_ssl_module ssl协议支持
–with-stream_ssl_preread_module
–with-stream_ssl_module
以下说明摘自别处:
ngx_stream_ssl_preread_module模块:要在不解密的情况下拿到HTTPS流量访问的域名,
只有利用TLS/SSL握手的第一个Client Hello报文中的扩展地址SNI (Server Name Indication)来获取。
NGINX官方从1.11.5版本开始支持利用ngx_stream_ssl_preread_module模块来获得这个能力
4.其他依赖问题
./configure: error: the HTTP gzip module requires the zlib library. yum install -y zlib-devel
./configure: error: SSL modules require the OpenSSL library. yum -y install openssl openssl-devel
5.解决依赖问题后安装
cd /usr/local/nginx-1.20.0 ./configure --prefix=/usr/local/nginx --with-stream --with-http_ssl_module --with-stream_ssl_preread_module --with-stream_ssl_module make make install
1.启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
可以看到启动成功
2.重载配置
/usr/local/nginx/sbin/nginx -s reload
3.https支持
默认http是未开启的,需要生成ssl证书并加入nginx.conf配置
##建个目录存放ssl证书 mkdir /usr/local/ssl ##生成100年有效期的非安全https证书 openssl req -utf8 -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/ssl/nginx.key -out /usr/local/nginx/ssl/nginx.crt 执行命令后一路回车即可 ##查看有效期 openssl x509 -in /usr/local/nginx/ssl/nginx.crt -noout -dates
nginx.conf中加入ssl配置,示例如:
nginx.conf # HTTPS server # server { listen 443 ssl; server_name localhost; ssl_certificate /usr/local/nginx/ssl/nginx.crt; ssl_certificate_key /usr/local/nginx/ssl/nginx.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://192.168.56.1:8080; proxy_connect_timeout 1; proxy_http_version 1.1; proxy_send_timeout 30; proxy_read_timeout 60; proxy_set_header Host $host:$server_port; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
通过reload命令执行/usr/local/nginx/sbin/nginx -s reload,然后访问https://127.0.0.1:443测试
因为前面三步骤已按源码编绎进行了安装,因此相当于有相应的二进制文件了,可以备份保留成安装包,在其他相同类型的centos7上直接部署,可节省很多源码安装花费的时间。
1.在源码安装的机器上执行备份,保留二进制文件
cd /usr/local/ tar -zcvf nginx_install.tar.gz nginx
2. 在其他相同类型的Centos7服务器上,可直接解压使用
##解压
tar -zxvf nginx_install.tar.gz -C /usr/local/
##启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
需要注意的是目录需要一样,即源码安装在/usr/local下,那么迁移后就放在/usr/local下.
至此,nginx的安装与使用完毕。