一,環境說明
服務器系統:centos6
服務器IP地址:0.0.0.0
域名:bjubi.com
二,域名解析到服務器
在阿里雲控制台-產品與服務-雲解析DNS-找到需要解析的域名點“解析”,進入解析頁面后選擇【添加解析】按鈕會彈出如下頁面:
主機記錄這里選擇@,記錄值就是服務器ip地址,確認。
三,申請ca證書
在阿里雲控制台-產品與服務-安全(雲盾)-CA證書服務(數據安全),點擊購買證書,
選擇“免費版DV SSL”,點擊立即購買:
然后點去支付:
最后確認支付:
就會回到管理界面:
點擊“補全”,輸入要解析的域名,點下一步:
說明:因為我們這里申請的是開發版免費證書,所以一個證書僅支持一個域名認證,不支持通配符。
等待幾分鍾,證書狀態變為“已簽發”后,證書就申請成功了。
四,下載證書
列表中找到已簽發的證書,下載:
進入下載頁面,找到ngin頁簽中nginx配置信息,並“下載證書 for Nginx”:
記錄以下內容,為了一會兒配置nginx用:
下載的文件有兩個:
1,214292799730473.pem
2,214292799730473.key
五,服務器安裝,配置nginx
登錄到服務器:
$ apt-get update // 更新軟件 $ apt-get install nginx // 安裝nginx
六,配置ca證書
1,nginx的安裝目錄為:/etc/nginx/。進入目錄,增加cert/文件夾,把剛剛下載的兩個文件上傳到cert/文件夾中。
2,在/etc/nginx/sites-enabled/下,增加bjubi.com文件。內容如下:
說明:下面的配置是對443端口和80端口進行監聽,443端口要啟用ssl。監聽443端口的server配置可以仿照上面ca認證頁面的nginx配置示例進行配置。
root節點筆者創建了一個bjubi.com/的文件夾,專門存放來自這個域名的請求以示區分。
bjubi.com/文件夾下增加一個index.html文件,里面僅僅寫了一行<h1>welcome。
server { listen 443; server_name bjubi.com; // 你的域名 ssl on; root /var/www/bjubi.com; // 前台文件存放文件夾,可改成別的 index index.html index.htm;// 上面配置的文件夾里面的index.html ssl_certificate cert/214292799730473.pem;// 改成你的證書的名字 ssl_certificate_key cert/214292799730473.key;// 你的證書的名字 ssl_session_timeout 5m; 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 / { index index.html index.htm; } } server { listen 80; server_name bjubi.com;// 你的域名 rewrite ^(.*)$ https://bjubi.com:443/$1 permanent;// 把http的域名請求轉成https }
配置完成后,檢查一下nginx配置文件是否可用,有successful表示可用。
$ nginx -t // 檢查nginx配置文件
配置正確后,重新加載配置文件使配置生效:
$ nginx -s reload // 使配置生效
至此,nginx的https訪問就完成了,並且通過rewrite方式把所有http請求也轉成了https請求,更加安全。
如需重啟nginx,用以下命令:
$ service nginx stop // 停止 $ service nginx start // 啟動 $ service nginx restart // 重啟
七,訪問效果
輸入http:bjubi.com也會自動跳轉至https頁面。
說明:如果是雲服務器比如阿里雲ECS,需要到阿里雲ECS的管理后台的安全組,修改端口過濾規則把80端口和443端口開放才能訪問到。
CentOS下配置Nginx的https時報錯:缺少ngx_http_ssl_module
1.首先,找到Nginx安裝包的位置。比如,我的是:/usr/local/src/nginx-1.15.1
cd /usr/local/src/nginx-1.15.1
如果忘記安裝包放哪里了,可以find命令找一下。
如果還是找不到(比如刪除了)。可以查看當前Nginx的版本號,重新下載一個。
【查看Nginx版本命令】/usr/local/nginx/sbin/nginx -V (/usr/local/nginx/是你Nginx服務器的實際位置)
2.生成新的Nginx配置。執行
/usr/local/nginx/sbin/nginx -V
查看configure arguments:后邊有沒有值,如果有,就復制下來。
然后執行
./configure --原來有的模塊(如果有的話) --with-http_ssl_module
make
3.關閉現在運行的Nginx服務器。
/usr/local/nginx/sbin/nginx -s stop
由於我的配置文件報錯,缺少
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:121
所以無法關閉。於是,我嘗試把新的正確的nginx.conf替換出問題的nginx.conf。
再次執行關閉,成功。
4.OK,執行最后的步驟。把編譯好的nginx覆蓋掉原有的nginx。
cp ./objs/nginx /usr/local/nginx/sbin/
系統會提示是否覆蓋,輸入y。
我運行時,系統提示Text file busy,執行失敗。
沒關系!
ps -A
找到所有Nginx的進程。
Kill 1234
再次執行
cp ./objs/nginx /usr/local/nginx/sbin/
沒有報錯。把正確的nginx.conf文件夾上傳。
啟動nginx。
./nginx -c /usr/local/nginx/conf/nginx.conf
運行成功!!