nginx实现https转发
1. 要有安全证书和key文件: *.crt, *.key; 保存在根目录下(位置不重要, 只要绝对路径可以找的到)
2. 修改nginx.conf
#user nginx; #当前用户
worker_processes 1;events {worker_connections 1024;
}http {proxy_buffer_size 1024k;proxy_buffers 4 2048k;include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream serverNode {server 127.0.0.1:8080; server 127.0.0.2:8080; }# HTTPS serverserver {listen 80; # http端口listen 443 ssl; # https端口server_name localhost; # 配置的https的域名ssl_certificate /etc/nginx/ssl.crt; # 证书的crt文件所在目录(如果是阿里云申请的证书,就是*.pem文件)ssl_certificate_key /etc/nginx/ssl.key; # 证书key文件所在目录(使用绝对路径)location ~* /https/serverNode {#proxy_set_header Host $host:30443; #对外映射端口proxy_pass http://serverNode; #转发后访问的地址}}}######## 示例2 #########
user nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;# HTTPS serverserver {listen 80; listen 443 ssl; server_name localhost;ssl_certificate /etc/nginx/ssl.crt;ssl_certificate_key /etc/nginx/ssl.key; location / {proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://172.16.11.101:8881;}}}
3. 没有申请安全证书, 自定义一个
3.1 下载OpenSSL: https://www.openssl.org/source/ , 安装: https://www.cnblogs.com/rxbook/p/9367725.html
3.2 (nginx目录下执行命令)
# *.crt *.key C:国家代码 ST:省 L:市 O:组织名称 OU:组织单位名称 CN:域名
$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out ssl.crt -keyout ssl.key -subj "/C=CN/ST=js/L=nanjing/O=sss/OU=ssl/CN=ssl.com"
或者
# 生成一个RSA密钥 (这里需要输入密码,不小于4位)
$ openssl genrsa -des3 -out ssl.key 1024$ cp ssl.key ssl.key.org# 拷贝一个不需要输入密码的密钥文件(这里会验证密码, 就是上面命令输入的密码)
$ openssl rsa -in ssl.key.org -out ssl.key# 生成一个证书请求(这里需要输入一些信息, 除了国家Country Name和域名Common Name其它可以随便写)
$ openssl req -new -key ssl.key -out ssl.csr# 自己签发证书
$ openssl x509 -trustout -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt#没有-trustout,重启nignx可能会报:cannot load certificate "/etc/nginx/ssl.crt": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
执行完就会得到安全证书了.
# docker 环境下# 拉取nginx镜像, 以nginx-1为容器名启动, 映射80和443端口
$ docker pull nginx
$ docker run --name nginx-1 -p 3080:80 -p 30443:443 -d nginx# -- 生成安全证书 -- $ docker cp ssl.key nginx-1:/etc/nginx/ssl.key
$ docker cp ssl.crt nginx-1:/etc/nginx/ssl.crt# 编辑配置文件, 覆盖nginx默认配置文件
$ vi nginx.conf
$ docker cp nginx.conf nginx-1:/etc/nginx/nginx.conf# 进入容器, 重新加载配置文件
$ docker exec -it nginx-1 bash
$ cd /etc/nginx
$ nginx -s reload# -- 退出, 测试 --
4. nginx安装地址和安全证书域名不一致问题
Windows下:
修改 C:\Windows\System32\drivers\etc\hosts 文件
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost0.0.0.0 account.jetbrains.com
# ::1 localhost# 最后一行追加 本地ip 安全证书域名
127.0.0.1 www.baidu.com
Linux下:
$ vim /etc/hosts
# 最后一行追加 本地ip 安全证书域名
127.0.0.1 www.baidu.com# 或 hostnamectl set-hostname 安全证书域名
$ hostnamectl set-hostname www.baidu.com# 设置后可以用 hostname 查看域名
注: 1. hosts文件 一行里有且仅有一个ip; 一个ip后面可以加无数个域名; 多行ip对应一个域名时, 按第一个ip解析.
2. 域名需要注意的地方: hosts文件, nginx.conf文件, 安全证书绑定;
3. nginx默认配置文件有一行include引入其它配置文件, 小心冲突;
4. 转发的地址不要用127.0.0.1或localhost;
nginx实现https转发相关推荐
- 阿里云国际版如何使用NGINX作为HTTPS转发代理服务器
NGINX最初被设计为反向代理服务器.但是,随着不断发展,NGINX也可以作为实现转发代理的选项之一.转发代理本身并不复杂,它解决的关键问题是如何加密HTTPS流量.本文介绍了使用NGINX作为HTT ...
- nginx正向代理转发https出现502
nginx正向代理转发https出现502 现象1 原因1 解决方案1 参考博客1 现象2 原因2 解决方案2 参考博客2 其他原因 现象1 nginx的error日志显示如下(xxx是替换过了真实信 ...
- nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头
nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头 今天在排查服务器的问题时最后定位到服务器因为经过了运维这一层的处理,转发过来的请求不管用户请求 ...
- Nginx配置https,反向代理多实例tomcat的操作记录
案例说明: 前面一层nginx+Keepalived部署的LB,后端两台web服务器部署了多实例的tomcat,通过https方式部署nginx反向代理tomcat请求.配置一如下: 1)LB层的ng ...
- nginx 代理https后,应用redirect https变成http --转
原文地址:http://blog.sina.com.cn/s/blog_56d8ea900101hlhv.html 情况说明 nginx配置https,tomcat正常http接受nginx转发. n ...
- 【Nginx】 Nginx实现端口转发
什么是端口转发 当我们在服务器上搭建一个图书以及一个电影的应用,其中图书应用启动了 8001 端口,电影应用启动了 8002 端口.此时如果我们可以通过 localhost:8001 //图书 loc ...
- Nginx负载均衡+转发策略
负载均衡 负载均衡(详解)https://cloud.tencent.com/developer/article/1526664 --示例1upstream www_server_pool { ser ...
- 使用NGINX作为HTTPS正向代理服务器
NGINX主要设计作为反向代理服务器,但随着NGINX的发展,它同样能作为正向代理的选项之一.正向代理本身并不复杂,而如何代理加密的HTTPS流量是正向代理需要解决的主要问题.本文将介绍利用NGINX ...
- Nginx使用HTTPS建立与上游服务器的网络通信
Nginx使用HTTPS建立与上游服务器的网络通信 本文介绍了如何加密NGINX与上游组或代理服务器之间的HTTP通信. 先决条件 NGINX开源或NGINX Plus 甲代理服务器或服务器的上游组 ...
最新文章
- AI就是“大数据+机器学习”?答案是否定的
- JAVA ssm b2b2c多用户商城系统源码 (十二)springboot集成apidoc
- 计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根
- python gzipped source tarball,下载及安装Python详细步骤
- 选择 Reac​​tJS 的五大理由
- js计算器代码加减乘除_如何用jQuery做一个简易版计算器
- 获取客户端浏览器信息
- 数据结构——最短路径算法之floyd算法
- Spring 事务相关及@Transactional的使用建议
- 2018年3月计算机二级考试题,2018年3月计算机二级考试Access综合试题十
- Microsoft Jet 数据库引擎打不开文件,它已经被别的用户以独占方式打开,或没有查看数据的权限。...
- windows下Eclipse调试ffmpeg
- 黄金三月,技术自检 | 作为测试人必备的10项 Linux 技能
- 6.4(反向显示一个整数)
- 【单片机】简单的时钟代码
- extremecomponents -- 文档下载依赖使用
- SpringBoot解决XSS跨站脚本攻击
- Telink BLE SIG Mesh GATT 配网功能
- Simulink视频和图像处理模块介绍
- Android Studio导入第三方sdk