局域网内nginx反向代理上网
背景:局域网下有两台Linux服务器,信息如下:
服务器 | IP地址 | 操作系统 | Internet访问 |
---|---|---|---|
HOSTA(OpenWrt路由器) | 110.1.1.65(wan) | CentOS 6.7 x64 | 是 |
HOSTB | 110.1.1.215 | CentOS 6.7 x64 | 否 |
需求:HOSTA和HOSTB均处在局域网中,二者能够互相ping通,HOSTA开通网络策略支持互联网访问,但是HOSTB不支持,现在需要将HOSTA作为代理服务器,让HOSTB通过HOSTA实现互联网访问,主要需要HOSTB能够进行在线的软件包安装(yum和pip)
方案
使用Nginx反向代理将HOSTA作为http服务器,在HOSTB上配置http全局代理。
设置nginx为HTTP代理服务器
服务器端即HOSTA主机,设置nginx为HTTP代理服务器上网,只需要3步,分别为安装nginx、配置nginx、修改OpenWrt 防火墙。
1、登录OpenWrt 安装nginx
在windows下使用SSH工具,如Putty等,在Host name 填写192.168.1.1,端口22 ,然后点击 Open.
在linux下,打开终端输入
1 | ssh root@192.168.1.1 |
输人密码(默认 admin)登陆,如下图所示s
使用opkg安装 nginx ,输入下面的指令
1 | opkg update |
2、配置 nginx
这里我们首先将nginx原本配置文件nginx.conf
备份为nginx.conf.backup
,后修改里面的内容,配置为HTTP反向代理模式,选择8080为服务监听端口。
1 | cd /etc/nginx |
将下面的内容替换nginx.conf
中默认的内容
1 | user nobody nogroup; |
修改完成后,按 esc ,输入:wq!
保存
紧接着,启动nginx
1 | cd /etc/init.d |
3、修改OpenWrt 防火墙
由于OpenWrt wan口防火墙默认禁止入站数据,这里我们需要改为ACCEPT
。在OpenWrt LuCI 界面中修改防火期设置。
打开浏览器,输入192.168.1.1
,账号默认为root,默认密码admin。依次选择网络 -> 防火墙
使你的设置同绿框中标明的那样,然后点击保存&应用
。
略过此步,使用windows 网络 ->疑难解答,你将会看到该设备或资源(Web 代理)未设置为接受端口’8080’上的连接的错误提示,如下
设置浏览器的代理(以IE为例)
设置HOSTB为http全局代理,以windows平台为例,在控制面板 -> Internet选项 -> 连接 -> 局域网设置 -> 代理服务器
填写IP(这里我们填写HOSTA 的IP,即110.1.1.65)和Port(即nginx 监听端口8080)即可。
注明:nginx不支持https正向代理 因为nginx不支持CONNECT,所以无法正向代理https网站。