前言

最近在捣腾代理,要做个内网yum源代理,之前没接触过代理这些个东西,折腾完记录一下吧。

一、下载源码

目前Nginx一般都是使用源码编译,没有现成的rpm包。下载网址:http://nginx.org/download/。里面有各个版本的Nginx,随便找个版本下载即可,尽量使用新版本,至少bug少一点,功能支持也多一点。

二、编译

Nginx依赖一些组件,需要提前安装好,比如pcre和zlib,如果要使用https相关模块,还需要安装openssl组件。如果是CentOS系统的话,直接用yum命令安装就好了,方便快捷。

yum install openssl* pcre* zlib*

依赖组件安装好后,就可以开始编译Nginx了。解压Nginx压缩包,进入到目录,执行千篇一律的编译命令。

./configure
make && make install

如果需要使用ssl模块,在configure时添加ssl模块,

./configure --with-http_ssl_module
make && make install

然后就OK了。
Nginx的默认安装根目录是/usr/local/nginx,因此它的命令,配置文件都在这个目录。为了方便,可以把Nginx的命令路径添加到环境变量中,这样就不要用绝对路径调用命令了。

export PATH=$PATH:/usr/local/nginx/sbin

三、代理

代理一般分为正向代理和反向代理。

正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

反向代理实际运行方式是代理服务器接受网络上的连接请求。它将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

可以这么认为,对于正向代理,代理服务器和客户端处于同一个局域网内;而反向代理,代理服务器和源站则处于同一个局域网内。

四、配置正向代理

Nginx的配置文件为/usr/local/nginx/conf/nginx.conf。一般我们不直接在该文件里配置我们的代理,转而使用include的方式,把我们的配置独立成另一个配置文件。

...
http {...keepalive_timeout  65;include yumproxy.conf;//添加自己的配置文件
}

这样我们就可以在yumproxy.conf文件里配置我们的代理了。

正向代理的配置很简单,其实两个语句就行了。

server {resolver 192.168.0.1;location / {proxy_pass http://$http_host$request_uri;}
}

其中,
resolver表示DNS服务器
location表示匹配用户访问的资源,并作进一步转交和处理,可用正则表达式匹配
proxy_pass表示需要代理的地址
$http_host 表示用户访问资源的主机部分
$request_uri 表示用户访问资源的URI部分。
如,http://nginx.org/download/nginx-1.6.3.tar.gz,则$http_host=nginx.org,$request_uri=/download/nginx-1.6.3.tar.gz。

可以不设置监听端口号,nginx默认监听80端口,除非你要修改监听端口,可以用listen字段指定。

可以看出,对于正向代理,只是对用户的访问进行一个转发,不做其他处理。

下面我们实际验证一下这个正向代理是否有效,找了两台虚拟机,一台用nginx搭建正向代理,另一台使用该代理访问,以百度为例。

先确认nginx服务启动,用netstat命令查看监听端口,

接下来使用curl命令设置代理访问百度首页。

访问成功。

五、反向代理配置

对于反向代理也很简单,如下,

server {server_name www.baidu.com;location / {proxy_pass http://www.baidu.com/;}
}

其中,server_name字段用于匹配用户访问资源的主机名称。proxy_pass字段同样表示转交的访问。

与正向代理不同,反向代理是指定了特定的网址。其实也就是限定了访问的对象。指定用户访问www.baidu.com时,只能去百度。如果你把proxy_pass的网址替换为新浪的,那就会出现用户明明要访问百度,却跑到新浪去了。这就是代理劫持了。另外,server_name可以匹配多个主机名,用空格分开即可,也可以用正则表达式匹配主机名。

但是特别要注意一点,对于没有匹配到的访问,nginx会默认走第一条server配置,所以一般我们将第一条server设置为阻止页面。

我们可以实际验证一下。先按上述配置反向代理,访问百度,正常返回,注意百度的ETAG,

然后我们再访问新浪,

可以看出,此时虽然我们想访问的是新浪,但是实际返回的还是百度。下面我们在上面反向代理的基础上添加一个空的server配置,只返回404错误。

此时,结果和我们预期的一致了,未匹配的全都走第一条server,返回404,也就控制了那些网站能访问,哪些不能访问,但是这明显不是nginx该考虑的。因为nginx的优势不在于控制访问,相比之下,squid的ACL才是更明智的选择,这就是后话了。

由此,我们可以看出,对于正向代理,Nginx没法控制用户访问的资源,对于所有访问只管转发。这对于内网需要管理网络访问来说肯定是不行的。而对比反向代理,是可以控制用户访问的网络资源的。只代理允许访问的网址,不允许访问的网址到了代理服务器也出不去。

Nginx 正向代理和反向代理相关推荐

  1. [转]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

  2. 浅析Nginx 正向代理与反向代理

    1.正向代理和反向代理的概念 无论是正向代理,还是反向代理,说到底,就是代理模式的衍生版本罢了.我们都学习过代理设计模式,都知道代理模式中有代理角色和被代理角色,为什么这么说,因为这两个角色对于我们理 ...

  3. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

  4. Nginx正向代理和反向代理的区别

    正向代理与反向代理的区别: 1.正向代理相对于目标服务器而言隐藏了客户端的真实IP地址,因为对于目标服务器而言所有请求都是从正向代理服务器发出的,正向代理主要是为了突破网络访问限制,比如ke xue上 ...

  5. Nginx:正向代理与反向代理

    什么是Nginx? Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.  Nginx是一款轻量级的WEB服务器/反向代理服务器及电子邮件(IMAP ...

  6. Nginx -- 正向代理和反向代理粗解

    正向代理:   有一些网站我们无法访问,如国外的网站,或者说某些公司内部的网站,我们输入完整的url无法访问,这时候我们就可以使用正向代理,让可以访问这些url的代理服务器作为正向代理服务器,接收客户 ...

  7. 正向代理和反向代理的区别Nginx配置虚拟主机流程(后续更新)

    目录 目标 安装Nginx 配置虚拟主机 准备 方法一 方法二(推荐) 验证虚拟主机 正向代理和反向代理的区别 区别&案例 正向代理和反向代理流程 目标 熟练在Linux安装单机Nginx: ...

  8. nginx正向代理,反向代理概念

    正向代理 正向代理,也就是传说中的代理,他的工作原理就像一个跳板, 简单的说, 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器 这个代理服务器呢,他能访问那个我不能访问的网站 于是我先连上 ...

  9. Nginx之负载均衡,正向代理和反向代理

    正向代理( Forward Proxy ): 定义:    是指是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容, 客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服 ...

最新文章

  1. 全面认识Eclipse中JVM内存设置
  2. Docker中安装DB2的详细教程和DBVisualize的安装教程
  3. 准备写一个Ibatisnet开发指南
  4. jdbc对mysql进行增删改查操作(Statement)
  5. [NewLife.XCode]高级查询(化繁为简、分页提升性能)
  6. CF1592E Bored Bakry
  7. python123第6周答案_Python123测验6: 组合数据类型 (第6周)
  8. P4055 [JSOI2009]游戏
  9. Layui判断Tab栏是否打开,查找Tab栏中的元素
  10. Android四大组件之 --- Service入门
  11. 随机森林模型解释_随机森林解释
  12. win10怎么修复网络连接服务器失败,微软发布修复补丁修复Win10无网络连接问题...
  13. eclipse优化记录
  14. 多边形的定义为什么要强调封闭图形_11.3.1 多边形讲解.ppt
  15. 架构测试:HAproxy实现负载均衡,前端为nginx+php,数据库实现读写分离和高可用...
  16. 14福师计算机导论在线作业一,(随机)福师18秋《计算机导论》在线作业一资料...
  17. 科学家有了钱以后,真是挺吓人的——D.E.Shaw的牛逼人生
  18. springboot电商系统-生鲜电商-蔬菜商城
  19. BT656/BT601/BT1120协议以及DM365/DM355/DM6467上使用的YUV颜色空间说明
  20. 逆战选择服务器后显示器,逆战游戏设置知识_隐藏在数据设置背后的大学问_叶子猪逆战...

热门文章

  1. imindmap11(思维导图软件)绿色版
  2. Linux修改文件名称
  3. stm32毕设 stm32的智能婴儿车系统(源码+硬件+论文)
  4. 各类Excel表格批量合并问题的实现思路与案例
  5. Premiere颜色插件 Synthetic-Aperture.Color.Finesse.Pl.v3.1.0.CE (x64) PR/AE版本
  6. 微环谐振器MRR相关笔记
  7. 教你关闭iTunes的自动更新功能
  8. MATLAB基础语法总结
  9. 分布式--雪花算法改进版--美团的Leaf
  10. Zox's code life 人生就是不停的战斗! xxx is not in the sudoers file.This incident will be reported.的解决方法