前段時間自己嘗試了下Nginx的反向代理, 將請求轉(zhuǎn)發(fā)到Tomcat上; 應(yīng)公司項目需要就自己研究了下配置添加證書, 實現(xiàn)https的請求; 我的證書是從阿里云買的免費的證書, 按照阿里云的提示, 將nginx.conf文件配置了下,配置如下:
# HTTPS server
server {
listen 443;
server_name www.test.com; #自己的域名
ssl on;
root html;
index index.html index.htm;
#這里的.pem/.key文件替換成自己對應(yīng)的文件名
ssl_certificate cert/xxxxxx.pem;
ssl_certificate_key cert/xxxxx.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 / {
#代理的目標地址
proxy_pass http://127.0.0.1:8000;
}
}
開始以為按照這個配置, 就可以監(jiān)聽443端口了, 什么事都不是那么順利,在objs文件夾中使用
./nginx -t
來檢查配置文件是否合法時候, 總是報錯誤
nginx: [emerg] unknown directive "ssl_certificate1" in /usr/local/nginx/conf/nginx.conf:107
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
這里的107行就是下面這個配置
ssl_certificate
非常郁悶, 檢查了好久, 以為是路徑配置錯誤; 后來自己也百度了下, 才發(fā)現(xiàn)是nginx沒有裝-----ssl模塊;
下面是排除問題的方法:
1.在nginx的安裝目錄執(zhí)行
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
2.在nginx安裝目錄執(zhí)行
make
千萬不要make install 否則會覆蓋現(xiàn)有的nginx
OK ~!! 這樣事情就能完美解決, 再也不會有明明配置很正確的報錯啦~!
備注: 反向代理的是Tomcat服務(wù)器, 如果重定向不到該服務(wù)器, 請查看是不是Tomcat沒配置好, 詳細請看
CentOS 7中安裝Nginx與反向代理(Tomcat):http://www.reibang.com/p/ccda596a42ff