前段时间自己尝试了下Nginx的反向代理, 将请求转发到Tomcat上; 应公司项目需要就自己研究了下配置添加证书, 实现https的请求; 我的证书是从阿里云买的免费的证书, 按照阿里云的提示, 将nginx.conf文件配置了下,配置如下:
# HTTPS server
server {
listen 443;
server_name www.test.com; #自己的域名
ssl on;
root html;
index index.html index.htm;
#这里的.pem/.key文件替换成自己对应的文件名
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;
}
}
开始以为按照这个配置, 就可以监听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
非常郁闷, 检查了好久, 以为是路径配置错误; 后来自己也百度了下, 才发现是nginx没有装-----ssl模块;
下面是排除问题的方法:
1.在nginx的安装目录执行
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
2.在nginx安装目录执行
make
千万不要make install 否则会覆盖现有的nginx
OK ~!! 这样事情就能完美解决, 再也不会有明明配置很正确的报错啦~!
备注: 反向代理的是Tomcat服务器, 如果重定向不到该服务器, 请查看是不是Tomcat没配置好, 详细请看
CentOS 7中安装Nginx与反向代理(Tomcat):https://www.jianshu.com/p/ccda596a42ff