環境:
CentOS-6.9/192.168.59.133
僅啟用iptables,selinux為disabled狀態
安裝開發環境:
# yum groupinstall -y "Server Platform Development" "Development Tools"
# yum install -y pcre-devel
```nginx的rewrite模塊和HTTP核心模塊會用到PCRE正則表達式語法```
添加nginx組合用戶
# groupadd -r nginx
# useradd -g nginx -r nginx
獲取nginx源碼,此次測試中沒有使用較新的版本,為nginx-1.12.2
# wget http://nginx.org/download/nginx-1.12.2.tar.gz
# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2.tar.gz
編譯安裝nginx
# ./configure --prefix=/usr/local/nginx
--conf-path=/etc/nginx/nginx.conf
--user=nginx --group=nginx
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--with-http_ssl_module #支持ssl模塊
--with-http_stub_status_module
--with-http_gzip_static_module
--http-client-body-temp-path=/var/tmp/nginx/client
--http-proxy-temp-path=/var/tmp/nginx/proxy
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
# make && make install
創建相應的目錄
# mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi,uwsgi}
支持nginx安裝完成,先測試一下nginx服務是否能正常啟動,並提供web服務
# /usr/local/nginx/sbin/nginx
# ss -tnlp
```此時若是看到80端口已然被監聽,則nginx正常運行```
配置使用https:
大致步驟:生成私鑰,生成證書簽署請求,並獲得證書
# cd /etc/pki/CA/
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
# touch serial index.txt
# echo 01 > serial
# mkdir /etc/nginx/ssl
# cd /etc/nginx/ssl
# (umask 077; openssl genrsa -out nginx.key 1024)
# openssl req -new -key nginx.key -out nginx.csr
# openssl ca -in nginx.csr -out nginx.crt -days 3655
配置:
# cd /etc/nginx
# cp nginx.conf{,.bak}
```建議不管出於什么目的修改任何文件之前都先備份,這樣的坑不要去踩了```
# vim nginx.conf
server {
listen 443 ssl;
server_name www.lushenle.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/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 / {
root html;
index index.html index.htm;
}
}
保存退出之后,測試配置文件是否存在錯誤,如若無誤,重載nginx服務
# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin -s reload
查看443端口是否被監聽:
# ss -tnlp
此時可看的443端口正在被監聽,且是以nginx用戶的身份運行的進程
配置iptables
# iptables -I INPUT -d 192.168.59.133 -p tcp -m multiport --dports 443,80 -j ACCEPT
# iptables -I OUTPUT -s 192.168.59.133 -p tcp -m multiport --dports 443,80 -j ACCEPT
測試https服務,瀏覽器輸入https://192.168.59.133,或者其他的工具訪問
# curl -k https://192.168.59.133