Nginx的這些妙用,你確定有不知道的!

SpringBoot實戰電商項目mall(25k+star)地址:github.com/macrozheng/…javascript

摘要

本文將從反向代理、文件壓縮、地址重寫三方面來說解Nginx在Docker環境下的使用技巧!css

在Docker環境下的安裝

下載nginx的docker鏡像

docker pull nginx:1.10 複製代碼

從容器中拷貝nginx配置

  • 先運行一次容器(爲了拷貝配置文件):
docker run -p 80:80 --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/logs:/var/log/nginx \ -d nginx:1.10 複製代碼
  • 將容器內的配置文件拷貝到指定目錄:
docker container cp nginx:/etc/nginx /mydata/nginx/ 複製代碼
  • 修改文件名稱:
mv nginx conf 複製代碼
  • 終止並刪除容器:
docker stop nginx docker rm nginx 複製代碼

使用docker命令啓動

docker run -p 80:80 --name nginx \ -v /mydata/nginx/html:/usr/share/nginx/html \ -v /mydata/nginx/logs:/var/log/nginx \ -v /mydata/nginx/conf:/etc/nginx \ -d nginx:1.10 複製代碼

反向代理

反向代理就是當請求訪問你的代理服務器時,代理服務器會對你的請求進行轉發,能夠轉發到靜態的資源路徑上去,也能夠轉發到動態的服務接口上去。下面咱們以對域名進行代理爲例,來說講如何進行靜態代理和動態代理。html

靜態代理

靜態代理就是將請求代理到不一樣的靜態資源路徑上去,這裏咱們將對docs.macrozheng.com的請求代理到個人文檔項目中,對mall.macrozheng.com的請求代理到mall的前端項目中。前端

  • 首先咱們修改下本機的host文件:
192.168.6.132 docs.macrozheng.com 192.168.6.132 mall.macrozheng.com 複製代碼
  • 而後將咱們的文檔項目和mall前端項目上傳到nginx的html目錄中去,並進行解壓操做:
Nginx的這些妙用,你確定有不知道的!插图

  • /mydata/nginx/conf/conf.d文件夾中添加配置文件docs.conf對文檔項目進行反向代理:
server { listen 80; server_name docs.macrozheng.com;  location / { root /usr/share/nginx/html/docs;  index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 複製代碼
  • /mydata/nginx/conf/conf.d文件夾中添加配置文件mall.conf對mall的前端項目進行反向代理:
server { listen 80; server_name mall.macrozheng.com;  location / { root /usr/share/nginx/html/mall;  index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 複製代碼
  • 重啓nginx服務:
docker restart nginx 複製代碼
  • 經過docs.macrozheng.com便可訪問到咱們的文檔項目了:
Nginx的這些妙用,你確定有不知道的!插图1

  • 經過mall.macrozheng.com便可訪問到mall的前端項目了:
Nginx的這些妙用,你確定有不知道的!插图2

動態代理

動態代理就是把代理服務器的請求轉發到另外一個服務上去,這裏咱們將對api.macrozheng.com的請求代理到mall-admin的後臺服務上去。java

  • 首先咱們修改下本機的host文件,添加以下規則:
192.168.6.132 api.macrozheng.com 複製代碼
  • /mydata/nginx/conf/conf.d文件夾中添加配置文件api.conf對將請求代理到遠程的mall-admin服務上去:
server { listen 80; server_name api.macrozheng.com;  location / { proxy_pass http://120.27.63.9:8080;  index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 複製代碼
  • 重啓動nginx服務後,經過api.macrozheng.com/swagger-ui.html便可訪問到mall-admin的API文檔頁面了:
Nginx的這些妙用,你確定有不知道的!插图3

文件壓縮

若是咱們租用了一個帶寬很低的服務器,網站訪問速度會很慢,這時咱們能夠經過讓nginx開啓GZIP壓縮來提升網站的訪問速度。這裏咱們以mall的前端項目爲例來演示下它的提速效果。nginx

  • 首先咱們對nginx進行限速操做,限制每一個鏈接的訪問速度爲128K來創建一個比較慢的訪問場景;git

  • 修改mall.conf配置文件,進行限速操做:github

server { listen 80; server_name mall.macrozheng.com; limit_rate 128k;  location / { root /usr/share/nginx/html/mall; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 複製代碼
  • 對mall的前端項目mall.macrozheng.com進行訪問,咱們能夠發現網站中有個js文件比較大,須要加載12s:
Nginx的這些妙用,你確定有不知道的!插图4

  • nginx返回請求頭信息以下:
Nginx的這些妙用,你確定有不知道的!插图5

  • 修改/mydata/nginx/conf目錄下的nginx.conf配置文件,開啓GZIP壓縮;
http { gzip on;  gzip_disable "msie6";  gzip_vary on;  gzip_proxied any;  gzip_comp_level 6;  gzip_buffers 16 8k;  gzip_http_version 1.1;  gzip_min_length 1k;  gzip_types application/javascript text/css;  include /etc/nginx/conf.d/*.conf; } 複製代碼
  • 再次對mall的前端項目mall.macrozheng.com進行訪問,咱們能夠發現js文件已經被壓縮,加載時間縮短到3.88s,提速3倍左右:
Nginx的這些妙用,你確定有不知道的!插图6

  • nginx返回請求頭中添加了Content-Encoding: gzip的信息:
Nginx的這些妙用,你確定有不知道的!插图7

地址重寫

有的時候咱們的網站更換了域名,但還有用戶在使用老的域名訪問,這時能夠經過nginx的地址重寫來讓用戶跳轉到新的域名進行訪問。docker

  • 好比說原來咱們用的docs.macrozheng.com這個域名不用了,如今改爲www.macrozheng.com了來訪問文檔項目了;api

  • 修改docs.conf配置文件,將地址帶參數重寫到新地址:

server { listen 80; server_name docs.macrozheng.com; rewrite "^/(.*)$" http://www.macrozheng.com/$1;  location / { root /usr/share/nginx/html/docs; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } 複製代碼
  • 此時訪問舊域名docs.macrozheng.com會直接跳轉到www.macrozheng.com去。

公衆號

mall項目全套學習教程連載中,關注公衆號第一時間獲取。

公衆號圖片

原文链接:http://hk.javashuo.com/article/p-zdpdaqwl-ha.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享