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