默認(rèn)情況下ssl模塊并未被安裝,如果要使用該模塊則需要在編譯nginx時(shí)指定–with-http_ssl_module參數(shù).
需求:
做一個(gè)網(wǎng)站域名為 www.localhost.cn 要求通過https://www.localhost.cn進(jìn)行訪問.
10.10.100.8 www.localhost.cn
實(shí)驗(yàn)步驟:
1.首先確保機(jī)器上安裝了openssl和openssl-devel
#yum install openssl
#yum install openssl-devel
2.創(chuàng)建服務(wù)器私鑰,命令會(huì)讓你輸入一個(gè)口令:
openssl genrsa -des3 -out server.key 1024 //生成私鑰
#因?yàn)橐院笠onginx使用.每次reload nginx配置時(shí)候都要你驗(yàn)證這個(gè)PAM密碼的.由于生成時(shí)候必須輸入密碼,你可以輸入后 再刪掉。
3.創(chuàng)建簽名請(qǐng)求的證書(CSR):
openssl req -new -key server.key -out server.csr //生成證書頒發(fā)機(jī)構(gòu),用于頒發(fā)公鑰
4.在加載SSL支持的Nginx并使用上述私鑰時(shí)除去必須的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key //除去密碼以便reload詢問時(shí)不需要密碼
5.配置nginx
最后標(biāo)記證書使用上述私鑰和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
6.修改Nginx配置文件,讓其包含新標(biāo)記的證書和私鑰:
#vim /usr/local/nginx/conf/nginx.conf
http {
include server/*.cn;
}
7.修改Nginx配置文件,讓其包含新標(biāo)記的證書和私鑰:
#vim /usr/local/nginx/server/www.localhost.cn
server {
listen 443; //監(jiān)聽端口為443
server_name www.localhost.cn;
ssl on; //開啟ssl
ssl_certificate /etc/pki/tls/certs/server.crt; //證書位置
ssl_certificate_key /etc/pki/tls/certs/server.key; //私鑰位置
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1; //指定密碼為openssl支持的格式
ssl_ciphers HIGH:!aNULL:!MD5; //密碼加密方式
ssl_prefer_server_ciphers on; //依賴SSLv3和TLSv1協(xié)議的服務(wù)器密碼將優(yōu)先于客戶端密碼
location / {
root html; //根目錄的相對(duì)位置
index index.html index.htm;
}
}
8.啟動(dòng)nginx服務(wù)器.
#/usr/local/nginx/sbin/nginx -s reload //如果環(huán)境允許的話直接殺掉進(jìn)程在啟動(dòng)nginx
如果出現(xiàn)“[emerg] 10464#0: unknown directive "ssl" in /usr/local/nginx-0.6.32/conf/nginx.conf:74”則說明沒有將ssl模塊編譯進(jìn)nginx,在configure的時(shí)候加上“--with-http_ssl_module”即可
如:[root@localhost nginx-1.4.4]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
9.測試網(wǎng)站是否能夠通過https訪問
https://www.localhost.cn
另外還可以加入如下代碼實(shí)現(xiàn)80端口重定向到443
server {
listen 80;
server_name www.localhost.cn;
#rewrite ^(.*) https://$server_name$1 permanent;
rewrite ^(.*)$ https://$host$1 permanent;
}
過以下配置,可以設(shè)置一個(gè)虛擬主機(jī)同時(shí)支持HTTP和HTTPS
listen 80;
listen 443 default ssl;
同時(shí)支持80和443同時(shí)訪問配置:
server {
listen 80 default backlog=2048;
listen 443 ssl;
server_name www.localhost.com;
#ssl on; //注釋掉
ssl_certificate /usr/local/https/www.localhost.com.crt;
ssl_certificate_key /usr/local/https/www.localhost.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
Nginx 設(shè)置忽略favicon.ico文件的404錯(cuò)誤日志(關(guān)閉favicon.ico不存在時(shí)記錄日志)
在 server { … }內(nèi)添加如下信息.
location = /favicon.ico {
log_not_found off;
access_log off;
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。