Skip to main content

基础使用

记录一些Nginx基础使用

常用

  • 基础指令
# 启动
nginx

# 前台启动
nginx -g 'deamo off'

# 指定配置文件启动
nginx -c xxxx.conf

# 检查配置文件
nginx -tc xxxx.conf

# 热重启,常用语更新配置文件后
nginx -s reload

# 停止 - 此方式停止步骤是待nginx进程处理任务完毕进行停止。
nginx -s quit

# 停止 - 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
nginx -s stop
  • 状态查询
# 查看当前版本
nginx -v

# 查看当前configure配置
nginx -V

# 查看进程
ps aux | grep nginx | grep -v grep
ps aux | grep :80 | grep -v grep

# 停止进程
killall -9 nginx

常用功能

反向代理 (proxy_*)

# 配置文件中
http {
server {
location ^~ /wx/webview/webview {
root /home/hongqi/server/app/public/wx/webview/;
try_files $uri $uri/ @webview;
add_header Cache-Control no-cache;
}
# 这里的 @webview 被上面的server引用,相当于作一个关联
location @webview {
add_header Cache-Control no-cache;
proxy_pass http://127.0.0.1:7001/wx/webview/index25.html?$query_string;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http:// $scheme://;
}
}
}

负载均合 (upstream)

http {
upstream xxx { # 负载均衡 默认随机分配
server 192.168.0.1:11 # 设置变量
}
server {
location * {# 转发规则
proxy_pass http://xx/; # 反向代理 xx 可以使用变量
}
}
}

开启gzip压缩

  • 如无特殊情况,一般都推荐采用nginx来做gzip的压缩,后台应用如果有相关功能可以关闭
http {
# 总开关
gzip on;

# 开启, 真实压缩
gzip_static on;
gzip_min_length 1k;
gzip_buffers 4 16k;

#gzip_http_version 1.0;
gzip_comp_level 5;

# 要压缩的目标 多个用空格隔开
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;


gzip_vary on;
gzip_disable "MSIE [1-6]\.";
}

开启缓存(expires

nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高用户浏览速度,我们可以通过设置nginx中的expires,让用户访问一次后,将图片缓存在用户的浏览器中,且时间比较长的缓存。

  • 使用
http {
server {
# 开启缓存
location ~* ^.+\.(eot|ttf|otf|woff|svg)$ {
access_log off; # 记录日志
expires max; # 存在用户浏览器的时间 常用格式 30s 30m 30h 30d max
}

# 不同文件指定不同的缓存时间
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
access_log off;
expires 24h;
}

# 不同文件指定不同的缓存时间
location ~* ^.+\.(html|htm)$ {
access_log off;
expires 1h;
}
}
}
  • 原理:

    Cache-control 用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了 Pragma: no-cache) Expires 表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。

img img

当nginx设置了expires后,例如设置为:expires 10d; 那么,所在的location或if的内容,用户在10天内请求的时候,都只会访问浏览器中的缓存,而不会去请求nginx。

注:需要注意的是,这种缓存方式只能在用户不对浏览器强制刷新的情况下生效,如果用户通过url来进行访问,是可以访问到缓存的。

图片返回webp格式


参阅文献