nginx的安装、配置、启动和gzip
原文链接:http://ggz.longpanda.top/article_detail?id=19
修改配置文件后重启
场景: 修改配置文件后的重启
cd /usr/local/nginx/sbin
查看配置文件是否正确
./nginx -t
首次启动
./nginx
或者
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
重新启动
service nginx restart
或者
cd /usr/local/nginx/sbin/nginx
./nginx -s reload (推荐)
或者
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
查找nginx配置文件路径
ps -ef | grep nginx
场景: 对于一台陌生的服务器或安装太久忘了位置,怎么才能简单快速的找到配置文件的位置呢?
停止
查看进程
ps -ef|grep nginx
杀死对应的进程
kill -QUIT 10774
示例:
kill -HUP 2255
阿里云下安装nginx
1、执行yum命令安装依赖
yum -y install pcre*
yum -y install openssl*
2、下载nginx
2.1如果没有安装wget,下载已编译版本
yum install wget
2.2进入指定目录
cd /usr/local/
2.3下载nginx 安装包,“1.16.0”是指定的安装版本,可以选择自己需要或者最新的版本
3、编译安装
3.1 通过tar解压安装包
tar -zxvf zlib-1.16.0.tar.gz
3.2 进入nginx
cd nginx-1.16.0
3.3 执行编译
./configure
3.4 编译报错误的话比如:“C compiler cc is not found”,这个就是缺少编译环境,安装一下就可以了
yum -y install gcc make gcc-c++ openssl-devel wget
3.5 编译成功执行
make -j4 && make install
4、nginx测试
4.1 在nginx可执行命令下目录/usr/local/nginx/sbin执行
./nginx -t
4.2出现下面结果表示安装成功
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4.2 验证是否启动成功:
执行./nginx,然后在浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功
4.4 首次启动 sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
如果执行./nginx -s reload 会报错 nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
4.5 重启:./nginx -s reload
4.6 停止: ./nginx -s stop
7、配置部署(下面以一个node/vue前后端分离的项目为例:)
7.1 找到nginx的conf配置文件
cd /usr/local/nginx/conf/
7.2 编辑文件
vi nginx.conf
7.3 在server对象里改为自己要的端口,默认为80
listen 80;
7.4 配置前端打包地址: root为vue打包后存放在服务器的地址
location / {
root /home/my-project/blog/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html; (去掉#,这个需要前端vue-route 的rmode:'history')
}
7.4 配置后端接口地址:proxy_pass 为后端接口地址
#解决跨域 location /api { # 自定义nginx接口前缀 proxy_pass http://127.0.0.1:3000; # 后台api接口地址 proxy_redirect default; #设置主机头和客户端真实地址,以便服务器获取客户端真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
-------------------------------------------------配置开机启动--------------------------------------------
配置开机启动
5、配置开机启动-配置文件(如果先部署项目,跳过看第7条) //进入目录,编辑nginx文件 cd /etc/init.d/ vi nginx //添加如下,注内容修改PATH字段, 匹配自己的安装路径,如果按这个流程安装应该是一样的 #!/bin/bash # Startup script for the nginx Web Server # chkconfig: - 85 15 # description: nginx is a World Wide Web server. It is used to serve # HTML files and CGI. # processname: nginx # pidfile: /usr/local/nginx/logs/nginx.pid # config: /usr/local/nginx/conf/nginx.conf PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH NGINX_HOME=/usr/local/nginx/sbin NGINX_CONF=/usr/local/nginx/conf PHP_HOME=/usr/local/php-fcgi/bin if [ ! -f "$NGINX_HOME/nginx" ] then echo "nginxserver startup: cannot start" exit fi case "$1" in 'start') $PHP_HOME/spawn-fcgi -a 127.0.0.1 -p 10080 -C 20 -u nobody -f $PHP_HOME/php-cgi $NGINX_HOME/nginx -c $NGINX_CONF/nginx.conf echo "nginx start successful" ;; 'stop') killall -TERM php-cgi killall -TERM nginx ;; esac 6、配置开机启动-启动 //设置执行权限 chmod a+x /etc/init.d/nginx //注册成服务 chkconfig --add nginx //重启, 查看nginx服务是否自动启动. shutdown -h0 -r netstat -apn|grep nginx
配置gzip
注:gzip是在http加的,不是在serice
http {
gzip on;
server{
gzip on; #开启gzip压缩功能
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon image/jpeg image/gif image/png;
gzip_vary on;
......
}
}
校验是否压缩成功:
1.打开浏览器下-network查看coontent—Encoding:gzip。
注:这也只能代表nginx开启了压缩,但是不代表这个文件被压缩过,还要对比访问速度和size是否变小。
2.对比size是否变小。有可能nginx的gzip_types压缩的文件类型没有包含
3.对比network下reload时间是否变短
注释:
gzip on; #开启gzip压缩功能
gzip_min_length 1k;#设置允许压缩的页面最小字节数,页面字节数从header头的content-length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1k。如果小于1k可能会越压越大。
gzip_buffers 4 16k;#压缩缓冲区大小。表示申请4个单位为16k的内容作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_http_version 1.0;#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,使用默认即可。
gzip_comp_level 2;#压缩比率。用来指定gzip压缩比,1压缩比量小,处理速度快;9压缩比量大,传输速度快,但处理最慢,也必将消耗cpu资源。
gzip_types text/plain application/x-javascript text/css application/xml; #用来指定压缩的类型,“text/html”类型总是会被压缩。
gzip_vary on; #vary header支持。该选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如用squid缓存经过nginx压缩的数据。
要注意:需要和不需要压缩的对象 (1)大于1k的纯文本文件html,js,css,xml,html. (2)图片,视频等不要压缩,因为不但不会减小,在压缩时消耗cpu和内存资源。
启动Nginx
使用默认配置文件启动nginx sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf # 查看nginx的版本号 sudo /usr/local/nginx/sbin/nginx -v
重启Nginx服务
方法一:进入nginx可执行目录sbin下,输入命令:
./nginx -s reload
注: 如重启失败,先杀死进程, 再重启