Nginx安装及配置

最近在部署Web站点,用到了nginx,这里记录主要相关操作及配置。
来句概括的话,nginx是一个高性能的http与反向代理服务器,具体nginx了解请看官网维基百科,了解下,

相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# yum方式安装nginx
$ yum -y install nginx

# 启动nginx服务
$ nginx

# 重载nginx配置
$ nginx -s reload

# 停止nginx服务
$ nginx -s stop


相关配置

gzip

Gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,减小通过网络传输的数据量,提高浏览的速度。

下面贴出在nginx.conf配置文件中配置gzip的基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Gzip
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;

# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
gzip_comp_level 2;

# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";

关于前端静态资源的gzip,我们也可以采取预压缩方案,这样子,对于用户请求,能够更快的服务,提升性能,比如webpack就可以再打包前端静态资源的时候,生成gz文件。
这里贴出静态gzip配置项。

1
2
gzip_static on;

  • 反向代理
1
2
3
4
5
6
7
8
9
10
11
12
#定义一个服务器,监听80端口,配置的域名是www.1991421.cn
server{
listen 80;
# using www domain to access the main website
server_name www.1991421.cn;
access_log /var/log/nginx/www.log

location / {
root /usr/www/website_root;
}
}

HTTP强转HTTPS

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

return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

ssl on;
ssl_certificate "/etc/nginx/ssl/blog.alanhe.me/fullchain.cer";
ssl_certificate_key "/etc/nginx/ssl/blog.alanhe.me/blog.alanhe.me.key";

...
}

client_max_body_size

如果报413 (Request Entity Too Large) 错误,需要注意该配置,默认1MB

  1. 按需修改,如果不想限制,改为0即可。
  2. client_max_body_size可以放在server或者location下。
1
2
3
4
5
location / {

client_max_body_size 0;

}

/usr/share/nginx/html

静态资源推荐托管位置放在这里。

referrer白名单

1
2
3
4
valid_referers none *.1991421.cn 1991421.cn;
if ($invalid_referer) {
return 403;
}

相关文章