SpringBoot實戰電商項目mall(25k+star)地址:github.com/macrozheng/…javascript
本文將從反向代理、文件壓縮、地址重寫三方面來說解Nginx在Docker環境下的使用技巧!css
docker pull nginx:1.10
複製代碼
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 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的前端項目中。前端
192.168.6.132 docs.macrozheng.com
192.168.6.132 mall.macrozheng.com
複製代碼
/mydata/nginx/conf/conf.d
文件夾中添加配置文件docs.conf對文檔項目進行反向代理:server {
listen 80;
server_name docs.macrozheng.com; #修改域名
location / {
root /usr/share/nginx/html/docs; #代理到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; #代理到mall文件夾中
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
複製代碼
docker restart nginx
複製代碼
docs.macrozheng.com
便可訪問到咱們的文檔項目了:mall.macrozheng.com
便可訪問到mall的前端項目了:動態代理就是把代理服務器的請求轉發到另外一個服務上去,這裏咱們將對
api.macrozheng.com
的請求代理到mall-admin的後臺服務上去。java
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;
}
}
複製代碼
api.macrozheng.com/swagger-ui.html
便可訪問到mall-admin的API文檔頁面了:若是咱們租用了一個帶寬很低的服務器,網站訪問速度會很慢,這時咱們能夠經過讓nginx開啓GZIP壓縮來提升網站的訪問速度。這裏咱們以mall的前端項目爲例來演示下它的提速效果。nginx
首先咱們對nginx進行限速操做,限制每一個鏈接的訪問速度爲128K來創建一個比較慢的訪問場景;git
修改mall.conf配置文件,進行限速操做:github
server {
listen 80;
server_name mall.macrozheng.com;
limit_rate 128k; #限制網速爲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.macrozheng.com
進行訪問,咱們能夠發現網站中有個js文件比較大,須要加載12s:/mydata/nginx/conf
目錄下的nginx.conf
配置文件,開啓GZIP壓縮;http {
gzip on; #開啓gzip
gzip_disable "msie6"; #IE6不使用gzip
gzip_vary on; #設置爲on會在Header裏增長 "Vary: Accept-Encoding"
gzip_proxied any; #代理結果數據的壓縮
gzip_comp_level 6; #gzip壓縮比(1~9),越小壓縮效果越差,可是越大處理越慢,因此通常取中間值
gzip_buffers 16 8k; #獲取多少內存用於緩存壓縮結果
gzip_http_version 1.1; #識別http協議的版本
gzip_min_length 1k; #設置容許壓縮的頁面最小字節數,超過1k的文件會被壓縮
gzip_types application/javascript text/css; #對特定的MIME類型生效,js和css文件會被壓縮
include /etc/nginx/conf.d/*.conf;
}
複製代碼
mall.macrozheng.com
進行訪問,咱們能夠發現js文件已經被壓縮,加載時間縮短到3.88s,提速3倍左右:Content-Encoding: gzip
的信息:有的時候咱們的網站更換了域名,但還有用戶在使用老的域名訪問,這時能夠經過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項目全套學習教程連載中,關注公衆號第一時間獲取。