下載SSL證書後,存放nginx的conf目錄下,修改nginx配置文件(如何配置來自阿里雲文檔)
[root@test ~]# /usr/local/nginx/conf/nginx.conf
# HTTPS server
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
下面對應中文註釋
# 以下屬性中以ssl開頭的屬性代表與證書配置有關,其他屬性請根據自己的需要進行配置。
server {
listen 443 ssl; #SSL協議訪問端口號爲443。此處如未添加ssl,可能會造成Nginx無法啓動。
server_name localhost; #將localhost修改爲您證書綁定的域名,例如:www.example.com。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #將domain name.pem替換成您證書的文件名。
ssl_certificate_key cert/domain name.key; #將domain name.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 / {
root html; #站點目錄。
index index.html index.htm;
}
}
修改後重啓nginx
[root@test ~]# /usr/local/nginx/sbin/nginx -s reload
發現無效,使用一下命令檢查配置文件,發送ssl錯誤
[root@test ~]# /usr/local/nginx/sbin/nginx -t
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:42
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
安裝openssl並從nginx的解壓目錄下重新得到一個新的nginx
[root@test ~]# yum -y install openssl openssl-devel
[root@test ~]# cd nginx-1.9.9
[root@test nginx-1.9.9]# ./configure
[root@test nginx-1.9.9]# ./configure --with-http_ssl_module
[root@test nginx-1.9.9]# make
將新的nginx覆蓋到原有的nginx,以防萬一,備份原有的nginx
[root@test nginx-1.9.9]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
[root@test nginx-1.9.9]# cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
再次檢查配置文件就正常了
[root@test ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
啓動nginx就好了
[root@test ~]# /usr/local/nginx/sbin/nginx
結果還不行……瘋了 直接就無法訪問了都
我用的是阿里雲服務器,忘記在安全組添加443端口了
還有一個是服務器的防火牆沒有打開443端口 下面就放開443端口並重啓
[root@test ~]# firewall-cmd --add-port=443/tcp --zone=public --permanent
[root@test ~]# firewall-cmd --reload
設置完就真的好了 https可以訪問了
又發現一個坑,由於我使用的是免費的證書,可能是因爲這個原因,導致我每一個二級域名都需要配置一個對應的SSL證書 ,多申請幾個就好了,具體可查看免費獲取SSL證書
下面貼上我的nginx配置
記得有一點 配置中的端口號6666是我隨便寫的 儘量避免不要用
爲啥? 去看這個 SpringBoot的項目部署 中 下面的關於 Chrome 訪問不了的情況
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
client_max_body_size 10M;
client_header_buffer_size 32k;
#gzip on;
server {
listen 443 ssl;
server_name xxx.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /apply/demo;
index index.html index.htm;
ssl_certificate xxx.pem;
ssl_certificate_key xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 443 ssl;
server_name mgt.xxx.com;
location / {
proxy_pass http://127.0.0.1:6666;
proxy_set_header Host $host;
proxy_set_header x-forwarded-for $remote_addr;
}
}
server {
listen 443 ssl;
server_name mgt.xxx.com;
ssl_certificate mgt.xxx.pem;
ssl_certificate_key mgt.xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header x-forwarded-for $remote_addr;
}
}
include ../blocksip.conf;
}