Nginx 的妙用之处

Posted by 彭楷淳 on 2020-10-01
Estimated Reading Time 3 Minutes
Words 916 In Total
Viewed Times

本文将从反向代理、文件压缩、地址重写三方面来讲解 Nginx 的使用技巧!

反向代理


反向代理就是当请求访问你的代理服务器时,代理服务器会对你的请求进行转发,可以转发到静态的资源路径上去,也可以转发到动态的服务接口上去。下面我们以对域名进行代理为例,来讲讲如何进行静态代理和动态代理。

静态代理

静态代理就是将请求代理到不同的静态资源路径上去,这里我们将对 antoniopeng.com 的请求代理到我的文档项目中。

首先我们修改下本机的 host 文件:

1
192.168.6.132 antoniopeng.com

然后将我们的文档项目 docs 上传到 nginx 的 html 目录中去。

修改 ngxin.conf 对文档项目进行反向代理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name antoniopeng.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;
}

}

重启 nginx 服务后即可访问。

动态代理

动态代理就是把代理服务器的请求转发到另一个服务上去,这里我们将对 antoniopeng.com 的请求代理到 http://192.168.3.101:4000 上去。

首先我们修改下本机的 host 文件,添加如下规则:

1
192.168.6.132 antoniopeng.com

修改 nginx.conf 将请求代理到 http://192.168.3.101:4000 上去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name antoniopeng.com; #修改域名

location / {
proxy_pass http://192.168.3.101:4000; #修改为代理服务地址
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

}

重启 nginx 服务后即可访问。

文件压缩


如果我们租用了一个带宽很低的服务器,网站访问速度会很慢,这时我们可以通过让 nginx 开启 GZIP 压缩来提高网站的访问速度。

首先我们对 nginx 进行限速操作,限制每个连接的访问速度为 128K 来建立一个比较慢的访问场景。

修改 nginx.conf 进行限速操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 返回请求头中添加了 Content-Encoding: gzip 的信息:

img

地址重写


有的时候我们的网站更换了域名,但还有用户在使用老的域名访问,这时可以通过 nginx 的地址重写来让用户跳转到新的域名进行访问。

比如说原来我们用的 antoniopeng.com 这个域名不用了,现在改成 www.antoniopeng.com 了来访问网站了。修改 nginx.conf 将地址带参数重写到新地址:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name antoniopeng.com;

rewrite "^/(.*)$" http://www.antoniopeng.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;
}

}

此时访问旧域名 antoniopeng.com 会直接跳转到 www.antoniopeng.com

更多干货请移步:https://antoniopeng.com


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !