今天我们利用 OpenResty 来实现一个反向代理服务器

step1:首先下载安装 OpenResty

# 下载安装 OpenResty
# 默认安装在 /usr/local 目录下,可在编译时指定安装目录
# 可在编译时加入更多第三方模块,以支持更多的功能 $ wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
$ tar -xzvf openresty-1.15.8.1.tar.gz
$ cd openresty-1.15.8.1/
$ ./configure
$ make
$ sudo make install

step2: 配置 OpenResty 中的 conf 文件

# 首先进入到 /usr/local/openresty/nginx 目录下,会发现这和单独安装 nginx 一样
# 打开 配置文件
$ sudo vim conf/nginx.conf
#user  nobody;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections ;
} http {
include 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 logs/access.log main; client_max_body_size 60M; # 【】配置代理服务器的缓存
proxy_cache_path /tmp/nginxcache levels=: keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off; sendfile on;
tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ;
#gzip on; #【】加入上游服务器,如果有多台,可以使用 hash/轮询来负载均衡
# 本机只有一台服务器,就是上篇博客中使用的 nginx 搭建的
upstream local {
server 127.0.0.1:;
# server ip:port;
# server ip:port;
} server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #【】修改这部分配置文件,
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_pass http://local; #【】使用上面设置的 cache
proxy_cache my_cache;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 1d; #root html;
#index index.html index.htm;
} #error_page /.html; # redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
}

修改后的配置文件

step3: 开启反向代理服务器

# 此时在 /usr/local/openresty/nginx 目录下
$ sudo ./sbin/nginx

此时我们看一下已经开启的 nginx 服务

注释:上图观察可以发现:开启了两份 nginx 服务,一份是反向代理服务器(在 openresty/nginx 下开启的 nginx 服务,masterPID:43121),一份是上游的后端服务器服务(在单独安装的 nginx 下开启的 nginx 后端服务器服务,masterPID:43095)

step4: 此时我们看一下通过反向代理服务器访问页面的流程,然后抓一下包看看【该访问是在宿主机上的浏览器上输入的 IP 地址】

注1:上图可以发现:响应头是通过 openresty 代理服务器发送回来的,并不是后端的上游服务器发送回来的!另外,验证配置的反向代理服务器是否生效可以按一下步骤进行:

step1: 首先请求 反向代理服务器,同上图所示;结论:可正常显示页面

step2: 关闭上游服务器(进入 nginx 目录下执行命令:sudo ./sbin/nginx -s stop)

step3: 再次执行步骤 step1 进行访问;结论:可正常访问页面,访问的资源是上次访问的缓存

step4: 清除浏览器缓存,清除反向代理服务器缓存(配置文件中缓存的存放目录:/tmp/nginxcache 目录下),再次访问;结论:不可正常展示页面

注2:反向代理配置文件中参数的意义:

【1】

【2】

【3】

【4】

可能出现的问题:

1,缺少 SSL 模块:

解决方法:

最新文章

  1. Google C++单元测试框架GoogleTest---AdvancedGuide(译文)上
  2. ISAP算法对 Dinic算法的改进
  3. NYOJ题目124中位数
  4. wf(四)
  5. [MetaHook] Quake OpenGL function
  6. IOS之代理
  7. mysql日期时间操作
  8. Android的三种网络通信方式
  9. Top 12 Best Free Network Monitoring Tools (12种免费网络监控工具)
  10. 一位ACM过来人的心得
  11. Velocity引擎导致jvm内存外内存泄露
  12. svn:怎样批量删除.svn文件
  13. iconfont.cn阿里巴巴矢量图下载字体图标实战
  14. 洛谷P1233 [木棍加工]
  15. Python爬虫入门教程 55-100 python爬虫高级技术之验证码篇
  16. 我的 FPGA 学习历程(02)—— 实验:点亮 LED 灯
  17. 吴恩达机器学习笔记39-误差分析与类偏斜的误差度量(Error Analysis and Error Metrics for Skewed Classes)
  18. MySQL服务安全加固
  19. HTML 5 <span> 标签
  20. Eclipse和Intel idea的常用技巧

热门文章

  1. 如何看Analysis分析图
  2. 使用vue框架开发前端项目的步骤
  3. 042、Java中逻辑运算之短路或运算“||”
  4. centos7下安装maven
  5. u盘使用记录、痕迹删除技巧方法
  6. GAN网络进行图片增强
  7. 解析基于keras深度学习框架下yolov3的算法
  8. 吴裕雄--天生自然java开发常用类库学习笔记:观察者设计模式
  9. pythonfile的知识点
  10. 史无前例!一季度Facebook移除22亿假账号