天天看點

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,如需轉載請自行聯系原作者