本文将从反向代理、文件压缩、地址重写三方面来讲解Nginx在Docker环境下的使用技巧!
- 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
-
反向代理就是当请求访问你的代理服务器时,代理服务器会对你的请求进行转发,可以转发到静态的资源路径上去,也可以转发到动态的服务接口上去。下面我们以对域名进行代理为例,来讲讲如何进行静态代理和动态代理。
静态代理就是将请求代理到不同的静态资源路径上去,这里我们将对docs.macrozheng.com的请求代理到我的文档项目中,对mall.macrozheng.com的请求代理到mall的前端项目中。
- 192.168.6.132 docs.macrozheng.com
- 192.168.6.132 mall.macrozheng.com
-
- 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;
- }
-
- }
-
- 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
-
动态代理就是把代理服务器的请求转发到另一个服务上去,这里我们将对api.macrozheng.com的请求代理到mall-admin的后台服务上去。
- 192.168.6.132 api.macrozheng.com
-
- 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开启GZIP压缩来提高网站的访问速度。这里我们以mall的前端项目为例来演示下它的提速效果。
- 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;
- }
-
- }
-
- 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;
- }
-
-
有的时候我们的网站更换了域名,但还有用户在使用老的域名访问,这时可以通过nginx的地址重写来让用户跳转到新的域名进行访问。
- 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;
- }
-
- }
-
-