CentOS 7 配置 Nginx 正向代理 http、https 最详解
手头项目中有使用到 nginx,因为使用的三方云服务器,想上外网需要购买外网IP的,可是有些需要用到外网却不常用的主机也挂个外网IP有点浪费了,便想使用nginx的反向代理来实现多台内网服务器使用一台代理服务器进行外网访问。
查了很多资料,分享这个功能的人很多(都是好人啊),参考着实现还是费了大半天功夫才搞定,总结了一下,让后来的人少走一些弯路。
我有两台云服务器:
172.25.114.72 是有外网的服务器,在这台上面安装 nginx
172.25.114.71 是没有外网的服务器,这台服务器通过 72 的 nginx 代理来上网
# more /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
nginx 的安装和其他相关插件的使用,以及我们使用的代理端口是否被占用,不再啰嗦赘述,直接进入正题。
准备:查询当前服务器的 DNS (经测试,这步没有什么作用)
# more /etc/resolv.conf
nameserver 100.100.2.138
nameserver 100.100.2.136
首先先打通 http 正向代理,http 正向代理非常容易,打通这步功能后,对整个 nginx 的正向代理会有一个更直接的感官。
1)在 nginx 安装目录下找到 nginx.conf 文件,使用 vi 命令打开,找个空白的位置键入如下内容:
server {
resolver 100.100.2.138; #指定DNS服务器IP地址,然而并没有什么用,可以使用 8.8.8.8
listen 8080; #指定代理的端口
location / {
proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址
}
}
说明:经测试,这种写法是最好的,其他如下写法会有一个问题,当端口不是 80 的时候,代理还是会跳转到 80,显然不是我们想要的
proxy_pass $scheme://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header Host $http_host;
2)保存修改,重启 nginx 后可以验证代理是否正确
# ./sbin/nginx -s reload
# curl --proxy 172.25.114.72:8080 http://www.baidu.com
如果没有看到返回的 html 代码内容或者返回错误页如400这样的错误页面代码,可以使用
3)在 172.25.114.71 服务器配置代理
# vi /etc/profile
http_proxy=http://172.24.103.72:8080/
export http_proxy
4)保存并刷新后,检查代理是否配置成功
# source /etc/profile
# curl http://www.baidu.com
说明:如果此时返回 curl: (7) Failed connect to 172.25.114.72:8080; Connection refused,可能是 profile 配置有误,可以执行如下命令检查代理是否正常:
# curl --proxy 172.25.114.72:8080 http://www.baidu.com
到此,nginx 的 http 正向代理配置成功。
接下来是 https 的正向代理,坑也是在这里。主流说 nginx 默认是不支持 https 的正向代理的,也有人信誓旦旦的说支持,归根到底,使用nginx的一个插件包肯定是能实现的。
1)下载 ngx_http_proxy_connect_module 组件并传到服务器上
说明:nginx-1.9.2 版本包里面自带,其他版本的各自按习惯来,github 地址:https://github.com/chobits/ngx_http_proxy_connect_module
2)查询当前 nginx 安装的配置信息,默认安装如下
# ./sbin/nginx -V
configure arguments: --prefix=/usr/local/nginx
3)nginx 添加 ngx_http_proxy_connect_module,注意第二条命令,在上一步查出的结果后面追加模块,别把之前安装的模块搞没了
# patch -p1 < /opt/tool/ngx_http_proxy_connect_module-master/patch/proxy_connect.patch
# ./configure --prefix=/usr/local/nginx --add-module=/opt/tool/ngx_http_proxy_connect_module-master
# make
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# cp ./objs/nginx /usr/local/nginx/sbin/
4)在 nginx 配置文件添加 https 的正向代理配置(最小集如下,注意修改端口号),配置完后重启 nginx
server {
resolver 8.8.8.8; #指定DNS服务器IP地址,就用 8.8.8.8 算了
listen ;
location / {
proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址
}
}
server {
resolver 8.8.8.8; #指定DNS服务器IP地址,就用 8.8.8.8 算了
listen ;
proxy_connect;
proxy_connect_allow all;
location / {
proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header Host $host;
}
}
5)在 172.25.114.71 服务器配置代理,注意,我这里将本地访问的路径配置了代理过滤 no_proxy,否则,访问 http://localhost:8080 也会被代理出去,那就尴尬了。
# vi /etc/profile
http_proxy=http://172.25.114.72:8080/
https_proxy=https://172.25.114.72:8084/
no_proxy="localhost, 172.25.114.72, 127.0.0.1, ::1"
export http_proxy https_prox no_proxy
6)保存并刷新后,检查代理是否配置成功
# source /etc/profile
# curl -k https://www.baidu.com
至此 nginx 的 http、https 代理完成。
这套配置就是为什么我大言不惭地说“最详解”?
1.解决 http 正向代理非 80 端口无法代理问题(大部分没有说明这个问题);
2.解决 https 正向代理任意端口都可以代理问题(大部分没有说明这个问题);
3.对被代理的服务器进行了代理过滤,防止服务无法访问的问题;
4. 2 台服务器完全打通的最小集(最干净,容易理解)成功案例。
当然,对于大牛来说,有点班门弄虎的嫌疑,其中有很多小细节,让初次接触的人可以少走很多弯路。
如果这条博客有帮到了你,麻烦点一下“推荐”让更多的人看到,能给大家带来帮助也不枉我辛辛苦苦打这么多字。
感谢你的阅读,谢谢!
CentOS 7 配置 Nginx 正向代理 http、https 最详解的更多相关文章
- CentOS 7.X下 -- 配置nginx正向代理支持https
环境说明: 本次测试使用的操作系统为:CentOS 7.2 x86 64位 最小化安装的操作系统,系统基础优化请参考:https://www.cnblogs.com/hei-ma/p/9506623. ...
- Centos 7配置nginx反向代理负载均衡集群
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- Nginx 反向代理与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...
- 使用Nginx反向代理绕过域名备案详解
之前笔者在景安云搞过一个Wordpress博客,然后域名备案也是在景安云上面搞的,后来又搞了一个阿里云的服务器,想把博客迁移到阿里云并且使用Ghost博客,然后使用二级域名链接到阿里云,结果出事了.景 ...
- Nginx正向代理代理http和https服务
Nginx正向代理代理http和https服务 1. 背景需求 通过Nginx正向代理,去访问外网.可实现局域网不能访问外网的能力,以及防止在上网行为上,留下访问痕迹. 2. 安装配置 2.1安装 w ...
- nginx 正向代理配置
需求场景:从以下俩张图可以比较直观的理解正向代理的作用(在其他文章中会表示为“http代理”,注意当前文档的配置不支持https代理) Nginx正向代理配置文件: server{ listen de ...
- CentOS 7 学习(二) 配置Nginx反向代理
CentOS 7 学习(二) 配置Nginx反向代理 Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理 ...
- nginx 反向代理及 https 证书配置
nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...
- Nginx正向代理让无法直接上网的机器通过代理上网
Nginx正向代理让无法直接上网的机器通过代理上网 在阿里云平台买了几台ECS.但是只要其中一台开通了公网.由于要初始化系统环境,需要网络安装相关依赖. Nginx正向代理配置: 一.Nginx 正向 ...
随机推荐
- Spring boot 搭配 JPA 生成表注释 和 字段注释
原文地址:https://blog.csdn.net/qq_39996837/article/details/84717748 由于在数据库表反向生成过程中呢,需要通过jpa自动生成表,并且这个表必须 ...
- 天才的记忆(vijos 1514)
描述 从前有个人名叫W and N and B,他有着天才般的记忆力,他珍藏了许多许多的宝藏.在他离世之后留给后人一个难题(专门考验记忆力的啊!),如果谁能轻松回答出这个问题,便可以继承他的宝藏.题目 ...
- HDU——3072 Intelligence System
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- P1665 正方形计数
P1665 正方形计数 题目描述 给定平面上N个点,你需要计算以其中4个点为顶点的正方形的个数.注意这里的正方形边不一定需要和坐标轴平行. 输入输出格式 输入格式: 第一行一个数X,以下N个点的坐标. ...
- 加上mvc:resources后controller访问404
之前因为静态资源访问,404,于是加上了类似的代码 <mvc:resources location="/resources/" mapping="/resource ...
- sata express接口
华硕z97主板的sata express接口目前没什么用,但随着电脑接口的发展,可能会占据一席之地. 1.顾名思义,SATA-Express是SATA接口 + PCI-Express的混合体,其理论带 ...
- WCF - 自定义绑定
自定义绑定 当系统提供的某个绑定不符合服务的要求时,可使用 CustomBinding 类.所有绑定都是从绑定元素的有序集构造而来的.自定义绑定可以从一组系统提供的绑定元素生成,也可以包含用户定义的自 ...
- 【CV论文阅读】生成式对抗网络GAN
生成式对抗网络GAN 1. 基本GAN 在论文<Generative Adversarial Nets>提出的GAN是最原始的框架,可以看成极大极小博弈的过程,因此称为“对抗网络”.一般 ...
- Linux学习系列之memcached
memcached简介 一.memcached是什么 memcached是一个开源的.支持高性能.高并发的分布式内存缓存系统 mem+cache+daemon:分布式内存缓存守护进程 memcache ...
- CodeIgniter 向mysql插入数据包括字母、汉字问题
今天在使用ci框架,须要向mysql数据表插入数据.当中的一个字段包括汉字.字母.但是用传统的使用sql语句:insert into XXX这样的方式,不管怎样都插入不成功,最后我换了还有一种方式: ...