Nginx如何实现反向代理

简介:

Nginx的2种用途

  • 静态内容的web服务器;

  • 反向代理服务器;


Nginx作为反向代理的特点

  • 接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力;

  • nginx代理和后端web服务器间无需长连接;

  • 发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的;


涉及的模块

  • Proxy:标准的HTTP模块,实现反向代理功能

  • Upstream:标准的HTTP模块,对后端web服务器调度做负载均衡功能;

  • FastCGI:标准HTTP模块,将php动态请求代理至后端PHP服务器;


配置部署

说明:本篇中,Nginx负责静态访问处理,动态访问将会被代理至后端PHP服务器;

wKiom1NiFeCx4dQYAAD1fw2YxNs045.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# vi  /etc/nginx/nginx.html
worker_processes  2;
pid     /var/run/nginx .pid;
events {
     worker_connections  1024;
}
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"' ;
     sendfile        on;
     keepalive_timeout  65;
     upstream backend {
         server    172.16.25.112:9000;
     }
     server {
         listen          80;
         server_name     xxrenzhe.lnmmp.com;
         access_log /var/log/nginx/lnmmp .access.log;
         error_log /var/log/nginx/lnmmp .errors.log notice;
         root            /www/lnmmp .com;
         location / {
             try_files $uri @missing;  # 先访问本地的静态资源,若失败,则转入missing处理块;
         }
         location @missing {
             rewrite ^(.*[^/])$ $1/ permanent;  # 直接访问域名或IP地址时,在其后增加结尾符/,并返回301
             rewrite ^  /index .php last;  # 将始终无法访问到的资源(如404错误),全部重定向至首页
         }
         # 禁止system目录访问,但允许指定类型的静态文件访问
         location ~* ^ /system/ .+\.(jpg|jpeg|png|gif|css|js|swf|flv|ico)$ {
             expires max;
             tcp_nodelay off;
             tcp_nopush on;
         }
         # 访问/system/时,则直接跳转回首页
         location ~  /system/  {
             rewrite ^  /index .php last;
         }
         location ~* \.php$ {
             default_type text /html ;
             charset      utf-8;
             fastcgi_pass backend;
             fastcgi_index index.php;
             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
             include fastcgi_params;
         }
     }
}


访问验证

静态文件访问由nginx直接返回

wKioL1NiFomAMhKYAAtdEUJa2Ow800.jpg

访问动态文件时转入后端php服务器

wKiom1NiFwjhmJVOAAjEzMM-OIg422.jpg

直接访问域名或IP地址时跳转至主页

wKiom1NiFyvQxIdwABANzJylcgo496.jpg

不存在文件访问跳转至主页

wKiom1NiF1CTQbKdABCCiKiBL_4928.jpg

访问system目录下的静态文件正常

wKioL1NiF1TAHgJ9AAm7Aa4fUBM015.jpg

访问system路径跳转至主页

wKiom1NiF6vDQG9WABKWfmR2ebQ603.jpg










本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1405447,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【如何用NGINX实现UDP四层反向代理?】
请注意,这个回答是基于NGINX目前的特性和功能,如果有新的版本或更新的特性,建议查阅NGINX官方文档或其他权威资源,以确保你得到最准确的配置信息。
33 0
|
3月前
|
JSON 应用服务中间件 API
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
利用Grafana的API Key+Nginx反向代理实现Grafana免登录访问
87 1
|
3月前
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
|
11天前
|
应用服务中间件 nginx
nginx进行反向代理的配置
在Nginx中设置反向代理的步骤:编辑`/etc/nginx/nginx.conf`,在http段加入配置,创建一个监听80端口、服务器名为example.com的虚拟主机。通过`location /`将请求代理到本地3000端口,并设置代理头。保存配置后,使用`sudo nginx -s reload`重载服务。完成配置,通过example.com访问代理服务器。
18 0
|
5月前
|
应用服务中间件 nginx Docker
nginx反向代理踩坑(容器方式)
nginx反向代理踩坑(容器方式)
183 0
|
5月前
|
负载均衡 Unix 应用服务中间件
深入解析HTTP反向代理:探索NGINX的神奇之处
深入解析HTTP反向代理:探索NGINX的神奇之处
|
1月前
|
负载均衡 应用服务中间件 Linux
|
2月前
|
tengine Rust 负载均衡
反向代理学习笔记(一) Nginx与反向代理绪论
反向代理学习笔记(一) Nginx与反向代理绪论
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
60 0