天天看点

Nginx如何实现反向代理

Nginx的2种用途

静态内容的web服务器;

反向代理服务器;

Nginx作为反向代理的特点

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

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

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

涉及的模块

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

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

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

配置部署

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

<a href="http://s3.51cto.com/wyfs02/M00/25/83/wKiom1NiFeCx4dQYAAD1fw2YxNs045.jpg" target="_blank"></a>

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

<code># vi  /etc/nginx/nginx.html</code>

<code>worker_processes  2;</code>

<code>pid    </code><code>/var/run/nginx</code><code>.pid;</code>

<code>events {</code>

<code>    </code><code>worker_connections  1024;</code>

<code>}</code>

<code>http {</code>

<code>    </code><code>include       mime.types;</code>

<code>    </code><code>default_type  application</code><code>/octet-stream</code><code>;</code>

<code>    </code><code>log_format  main  </code><code>'$remote_addr - $remote_user [$time_local] "$request" '</code>

<code>                      </code><code>'$status $body_bytes_sent "$http_referer" '</code>

<code>                      </code><code>'"$http_user_agent" "$http_x_forwarded_for"'</code><code>;</code>

<code>    </code><code>sendfile        on;</code>

<code>    </code><code>keepalive_timeout  65;</code>

<code>    </code><code>upstream backend {</code>

<code>        </code><code>server    172.16.25.112:9000;</code>

<code>    </code><code>}</code>

<code>    </code><code>server {</code>

<code>        </code><code>listen          80;</code>

<code>        </code><code>server_name     xxrenzhe.lnmmp.com;</code>

<code>        </code><code>access_log</code><code>/var/log/nginx/lnmmp</code><code>.access.log;</code>

<code>        </code><code>error_log</code><code>/var/log/nginx/lnmmp</code><code>.errors.log notice;</code>

<code>        </code><code>root           </code><code>/www/lnmmp</code><code>.com;</code>

<code>        </code><code>location / {</code>

<code>            </code><code>try_files $uri @missing; </code><code># 先访问本地的静态资源,若失败,则转入missing处理块;</code>

<code>        </code><code>}</code>

<code>        </code><code>location @missing {</code>

<code>            </code><code>rewrite ^(.*[^/])$ $1/ permanent; </code><code># 直接访问域名或IP地址时,在其后增加结尾符/,并返回301</code>

<code>            </code><code>rewrite ^ </code><code>/index</code><code>.php last; </code><code># 将始终无法访问到的资源(如404错误),全部重定向至首页</code>

<code>        </code><code># 禁止system目录访问,但允许指定类型的静态文件访问</code>

<code>        </code><code>location ~* ^</code><code>/system/</code><code>.+\.(jpg|jpeg|png|gif|css|js|swf|flv|ico)$ {</code>

<code>            </code><code>expires max;</code>

<code>            </code><code>tcp_nodelay off;</code>

<code>            </code><code>tcp_nopush on;</code>

<code>        </code><code># 访问/system/时,则直接跳转回首页</code>

<code>        </code><code>location ~ </code><code>/system/</code> <code>{</code>

<code>            </code><code>rewrite ^ </code><code>/index</code><code>.php last;</code>

<code>        </code><code>location ~* \.php$ {</code>

<code>            </code><code>default_type text</code><code>/html</code><code>;</code>

<code>            </code><code>charset      utf-8;</code>

<code>            </code><code>fastcgi_pass backend;</code>

<code>            </code><code>fastcgi_index index.php;</code>

<code>            </code><code>fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</code>

<code>            </code><code>include fastcgi_params;</code>

访问验证

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

<a href="http://s3.51cto.com/wyfs02/M01/25/83/wKioL1NiFomAMhKYAAtdEUJa2Ow800.jpg" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M02/25/83/wKiom1NiFwjhmJVOAAjEzMM-OIg422.jpg" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M00/25/83/wKiom1NiFyvQxIdwABANzJylcgo496.jpg" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M01/25/83/wKiom1NiF1CTQbKdABCCiKiBL_4928.jpg" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M00/25/83/wKioL1NiF1TAHgJ9AAm7Aa4fUBM015.jpg" target="_blank"></a>

访问system路径跳转至主页

<a href="http://s3.51cto.com/wyfs02/M02/25/83/wKiom1NiF6vDQG9WABKWfmR2ebQ603.jpg" target="_blank"></a>

本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1405447,如需转载请自行联系原作者