nginx根据域名做http,https分发
2014-11-18 22:20
956 查看
omcat端口:8080 做好虚拟主机 参照我的另一篇文章
nginx端口:80 根据域名分派
在conf/nginx.conf中的http中增加
include www.huozhe.com.conf
新建conf/www.huozhe.com.conf,内容如下:
server {
listen 80;
server_name www.huozhe.com;
location / {
proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
其中127.0.0.1是你的tomcat主机ip
要是代理https的话,内容如下:
server {
listen 443;
server_name mail.huozhe.com;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
location / {
proxy_pass https://192.168.0.2:443; proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
其中192.168.0.2是你的https主机
如果后端https没有证书的话,可以如此简化:
server {
listen 80;
server_name svn.huozhe.com;
location / {
proxy_pass https://192.168.0.2:443; proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
proxy_set_header X-Forwarded-Proto https; #注意看这里 多了一行
}
}
如果提示“SSL 接收到一个超出最大准许长度的记录。” 错误代码“ssl_error_rx_record_too_long”说明少了“ssl on;”这一行
后面的server.crt server.key是数字证书,具体可以参照openssl做证书
openssl做证书================================================
mkdir ssl
cd ssl
openssl genrsa -des3 -out server.key 1024 # 会提示你输入key,尽可能长些复杂些,后面好几处要用,我都是复制粘贴的
openssl req -new -key server.key -out server.csr # 输入组织信息 CN BeiJing HaiDian huozhe.com
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
这里的server.crt server.key你就可以拿去用了
nginx端口:80 根据域名分派
在conf/nginx.conf中的http中增加
include www.huozhe.com.conf
新建conf/www.huozhe.com.conf,内容如下:
server {
listen 80;
server_name www.huozhe.com;
location / {
proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
其中127.0.0.1是你的tomcat主机ip
要是代理https的话,内容如下:
server {
listen 443;
server_name mail.huozhe.com;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
location / {
proxy_pass https://192.168.0.2:443; proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
其中192.168.0.2是你的https主机
如果后端https没有证书的话,可以如此简化:
server {
listen 80;
server_name svn.huozhe.com;
location / {
proxy_pass https://192.168.0.2:443; proxy_set_header Host $host:443;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
proxy_set_header X-Forwarded-Proto https; #注意看这里 多了一行
}
}
如果提示“SSL 接收到一个超出最大准许长度的记录。” 错误代码“ssl_error_rx_record_too_long”说明少了“ssl on;”这一行
后面的server.crt server.key是数字证书,具体可以参照openssl做证书
openssl做证书================================================
mkdir ssl
cd ssl
openssl genrsa -des3 -out server.key 1024 # 会提示你输入key,尽可能长些复杂些,后面好几处要用,我都是复制粘贴的
openssl req -new -key server.key -out server.csr # 输入组织信息 CN BeiJing HaiDian huozhe.com
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
这里的server.crt server.key你就可以拿去用了
相关文章推荐
- Nginx实现根据域名http、https分发配置示例
- Nginx实现根据域名http、https分发配置示例
- nginx http和https 多域名负载均衡
- Nginx 配置多域名 http转https
- Nginx配置同一个域名http与https两种方式都可访问
- nginx同一端口监听多个域名和同时监听http,https
- Nginx配置域名同时支持 https 和 http 访问
- 详解nginx同一端口监听多个域名和同时监听http与https
- Nginx配置同一个域名同时支持http与https两种方式访问
- ssl,proxy;部分http部分https;80,443,8080;nginx+tomcat;
- 根据端口号(http和https的)跳转到不同的工程
- apache集成tomcat,并根据域名进行分发 屏蔽端口显示
- Nginx基础之http、https、socket 、SSL及TCP简单关系
- 解决Nginx+Tomcat下客户端https请求跳转成http的问题
- nginx http 跳转到https
- Nginx出现The plain HTTP request was sent to HTTPS port问题解决方法
- 关于HTTP和HTTPS相互转换的问题--解决根据过滤器自动切换功能--可用
- Linux下 Nginx 配置 http自动转https
- nginx强制使用https访问(http跳转到https)
- nginx自动将http转换为https