Nginx实现根据域名http、https分发配置示例
2017-09-22 09:37
1371 查看
这篇文章主要介绍了Nginx实现根据域名http、https分发配置示例,本文同时介绍了openssl证书生成方法,需要的朋友可以参考下
tomcat端口:8080 做好虚拟主机
nginx端口:80 根据域名分派
在conf/nginx.conf中的http中增加
复制代码代码如下:
include www.jb51.net.conf
新建conf/www.jb51.net.conf,内容如下:
复制代码代码如下:
server {
listen 80;
server_name www.jb51.net;
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.jb51.net;
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.jb51.net;
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你就可以拿去用了
tomcat端口:8080 做好虚拟主机
nginx端口:80 根据域名分派
在conf/nginx.conf中的http中增加
复制代码代码如下:
include www.jb51.net.conf
新建conf/www.jb51.net.conf,内容如下:
复制代码代码如下:
server {
listen 80;
server_name www.jb51.net;
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.jb51.net;
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.jb51.net;
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配置域名同时支持 https 和 http 访问
- nginx配置ssl证书实现https和http共存访问
- Nginx配置同一个域名http与https两种方式都可访问
- nginx配置ssl证书实现https访问的示例
- 一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS
- Nginx 配置多域名 http转https
- nginx 反向代理 配置 https 实现http https同时存在 经测试 支持location 规则
- Nginx配置同一个域名同时支持http与https两种方式访问
- Nginx实现if多重判断配置方法示例
- Nginx配置https和http可同时访问方法
- 在windows下apache配置SSL以实现http转换为https
- Nginx+Tomcat SSL配置指南|Nginx+Tomcat实现https安全链接
- 轻松把玩HttpClient之配置ssl,采用绕过证书验证实现https
- Linux下 Nginx 配置 http自动转https
- nginx+tomcat实现单IP,多域名,多站点的访问配置教程
- nginx http模块中配置的实现和解析---1
- nginx代理双域名,同一个IP地址的服务器实现两个域名配置