nginx反向 Proxy,動靜態請求分離,以及nginx緩衝應用,以及使用ngx_cache_purge清除指定URL

來源:互聯網
上載者:User
一,nginx反向 Proxy配置

#tomcat

Java代碼

  1. upstream tomcat_server{
  2. server 127.0.0.1:8080;
  3. }
  4. erver{
  5. listen 80;
  6. server_name www.codes51.com;
  7. location / {
  8. proxy_redirect off;
  9. proxy_set_header Host $host;
  10. proxy_set_header X-Real-IP $remote_addr;
  11. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  12. proxy_pass http://tomcat_server;
  13. }

顯然就是使用者訪問www.codes51.com(需要設定本地localhost,將www.codes51.com指向nginx所在IP)的時候(或將www.codes51.com直接寫在nginx所在的IP地址),將請求轉到到背景tomcat伺服器,即127.0.0.1:8080,並將請求到的資料轉寄給client

二,動靜態請求相分離

神馬意思?圖片,JS,HTML等靜態東西去訪問一台專門的伺服器,而動態請求去訪問另一台伺服器。就這麼簡單,上例子:

Java代碼

  1. server {
  2. listen 192.168.154.128:80;
  3. server_name image.codes51.com;
  4. index index.html;
  5. #proxy_pass http://tomcat_server;
  6. #charset koi8-r;
  7. #access_log logs/host.access.log main;
  8. location / {
  9. root html;
  10. #index index.html index.htm;
  11. proxy_redirect off;
  12. proxy_set_header Host $host;
  13. proxy_set_header X-Real-IP $remote_addr;
  14. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  15. }
  16. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  17. {
  18. valid_referers none blocked 192.168.154.128 192.168.154.1;
  19. if ($invalid_referer)
  20. {
  21. rewrite ^ /403.jpg break;
  22. }
  23. if (!-f $request_filename) {
  24. rewrite ^ /404.jpg last;
  25. }
  26. expires 30d;
  27. }
  28. #error_page 404 /404.html;
  29. # redirect server error pages to the static page /50x.html
  30. #
  31. error_page 500 502 503 504 /50x.html;
  32. location = /404.jpg {
  33. root html;
  34. }
  35. }
  36. tomcat
  37. upstream tomcat_server{
  38. server 127.0.0.1:8080;
  39. }
  40. server{
  41. listen 192.168.154.128;
  42. server_name www.codes51.com;
  43. location / {
  44. proxy_redirect off;
  45. proxy_set_header Host $host;
  46. proxy_set_header X-Real-IP $remote_addr;
  47. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  48. proxy_pass http://tomcat_server;
  49. }
  50. }

上面這種方式是通過設定不同的網域名稱,可不可以在同一個網域名稱中,通過判斷尾碼來將動態與靜態請求相分離呢?

Java代碼

  1. #tomcat
  2. upstream tomcat_server{
  3. server 127.0.0.1:8080;
  4. }
  5. server{
  6. listen 192.168.154.128;
  7. server_name www.codes51.com;
  8. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  9. {
  10. root html;
  11. }
  12. location ~ .*\.(jsp|do)$ {
  13. proxy_redirect off;
  14. proxy_set_header Host $host;
  15. proxy_set_header X-Real-IP $remote_addr;
  16. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  17. proxy_pass http://tomcat_server;
  18. }

OK!同一個網域名稱,根據尾碼不同,請求不同的服務,實現動態靜態請求相分離。仔細想一想,如果又出現了一種靜態檔案,比如*.abc ,那難道又去修改那個配製檔案嗎?顯然不太合理,所以可以考慮將所有的表態檔案放在同一個根目錄下面,比如/static那麼可以將上面的靜態頁面請求修改一下:

Java代碼

  1. location /static
  2. {
  3. root html/static;
  4. }

咦這樣是不是就好一些了,而且檔案的存放也比較有規範了。

三,nginx緩衝應用

nginx具有web快取服務,proxy_cache,但是有一個問題就是,proxy_cache不能清除指定的URL緩衝,只能設定URL到期時間,但是有問題,有人就會很快解決問題,nginx第三方模組ngx_cache_purge能清除指定URL。

nginx安裝時需要將ngx_cache_purege載入進去。

Java代碼

  1. ./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2

其中,/root/dxm/nginx/ngx_cache_purge-1.2為ngx_cache_purge解壓路徑(附件中提供ngx_cache_purge tar包下載)

現在來一段執行個體,實現圖片緩衝:

話說proxy_tem_path,與proxy_cache_path必須在同一個分區之下!

Java代碼

  1. proxy_temp_path /usr/local/nginx/proxy_temp;
  2. proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;


Java代碼

  1. upstream tomcat_server{
  2. server 127.0.0.1:8080;
  3. }
  4. server{
  5. listen 192.168.154.128;
  6. server_name www.codes51.com;
  7. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  8. {
  9. proxy_cache cache_one;
  10. proxy_cache_methods GET HEAD POST;
  11. proxy_cache_min_uses 1;
  12. proxy_cache_valid 200 302 10m;
  13. proxy_cache_valid 404 1m;
  14. proxy_cache_valid any 1m;
  15. proxy_cache_key "$host:$server_port$uri$is_args$args";
  16. proxy_redirect off;
  17. proxy_set_header Host $host;
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. proxy_pass http://tomcat_server;
  21. }
  22. location ~ .*\.(jsp)$ {
  23. proxy_redirect off;
  24. proxy_set_header Host $host;
  25. proxy_set_header X-Real-IP $remote_addr;
  26. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  27. proxy_pass http://tomcat_server;
  28. }
  29. location ~ /purge(/.*)
  30. {
  31. allow 192.168.154.128;
  32. allow 192.168.154.1;
  33. deny all;
  34. proxy_cache_purge cache_one $host:$server_port$1$is_args$args;
  35. }

恩,靜態頁面緩衝,動態請求不緩衝!

大家看一下最後一段的那個purege配置,很顯然,表示哪些IP可以手動清除指定的URL



以上就介紹了nginx反向 Proxy,動靜態請求分離,以及nginx緩衝應用,以及使用ngx_cache_purge清除指定URL,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.