nginx

启动

./sbin/nginx

停止

立即停止:/usr/local/nginx/sbin/nginx -s stop或者kill -INT nginx主进程号

平滑停止kill -QUIT nginx主进程号

平滑重启: /usr/local/nginx/sbin/nginx -s reload

nginx -t -c /etc/nginx/nginx.conf 检查配置文件是否正确 -c 指定检查路径 (出现successful 表示成功)

nginx -s reload -c /etc/nginx/nginx.conf 重启nginx 并指定配置文件路径

安装第三方模块

进入nginx的解压目录:

执行:

例如安装status模块和index随机模块;

./configure --prefix=/opt/nginx/nginx-module --with-http_stub_status_module --with-http_random_index_module

: make && make install

如果/opt/nginx/nginx-module不是nginx的安装目录 需要把/sbin/ngin移动到安装目录下的nginx下;

调优

http {
    sendfile  on                  #高效传输文件的模式 一定要开启
    keepalive_timeout   65        #客户端服务端请求超时时间
    log_format  main   XXX        #定义日志格式 代号为main
    access_log  /usr/local/access.log  main     #日志保存地址 格式代码 main
}

 

nginx静态资源配置

配置域:http、server、location
#文件高速读取
http {
     sendfile   on;
}
#在 sendfile 开启的情况下,开启 tcp_nopush 提高网络包传输效率
#tcp_nopush 将文件一次性一起传输给客户端,就好像你有十个包裹,快递员一次送一个,来回十趟,开启后,快递员讲等待你十个包裹都派件,一趟一起送给你
http {
     sendfile   on;
     tcp_nopush on;
}
#tcp_nodelay 开启实时传输,传输方式与 tcp_nopush 相反,追求实时性,但是它只有在长连接下才生效
http {
     sendfile   on;
     tcp_nopush on;
     tcp_nodelay on;
}

#将访问的文件压缩传输 (减少文件资源大小,提高传输速度)
#当访问内容以gif或jpg结尾的资源时
location ~ .*\.(gif|jpg)$ {
    gzip on; #开启
    gzip_http_version 1.1; #服务器传输版本
    gzip_comp_level 2; #压缩比,越高压缩越多,压缩越高可能会消耗服务器性能
    gzip_types   text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss image/jpeg image/gif image/png;     #压缩文件类型
    root /opt/app/code;     #对应目录(去该目录下寻找对应文件)
}

#直接访问已压缩文件
#当访问路径以download开头时,如www.baidu.com/download/test.img
#去/opt/app/code目录下寻找test.img.gz文件,返回到前端时已是可以浏览的img文件
location ~ load^/download {
    gzip_static on #开启;
    tcp_nopush on;
    root /opt/app/code;
}

浏览器缓存

location ~ .*\.(html|htm)$ {
    expires 12h;    #缓存12小时
}

服务器响应静态文件时,请求头信息会带上 etag 和 last_modified_since 2个标签值,浏览器下次去请求时,头信息发送这两个标签,服务器检测文件有没有发生变化,如无,直接头信息返 etag 和last_modified_since,状态码为 304 ,浏览器知道内容无改变,于是直接调用本地缓存,这个过程也请求了服务,但是传着的内容极少

跨站访问 

location ~ .*\.(html|htm)$ {
     add_header Access-Control-Allow-Origin *;
     add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
     #Access-Control-Allow-Credentials true #允许cookie跨域
}

在响应中指定 Access-Control-Allow-Credentials 为 true 时,Access-Control-Allow-Origin 不能指定为 *,需要指定到具体域名

防盗链 

首先,需要理解一个nginx变量

$http_referer #表示当前请求上一次页面访问的地址,换句话说,访问 www.baidu.com 主页,这是第一次访问,所以 $http_referer 为空,但是 访问此页面的时候还需要获取一张首页图片,再请求这张图片的时候 $http_referer 就为 www.baidu.com

 

location ~ .*\.(jpg|gif)$ {
    #valid_referers 表示我们允许哪些 $http_referer 来访问
    #none 表示没有带 $http_referer,如第一次访问时 $http_referer 为空
    #blocked 表示 $http_referer 不是标准的地址,非正常域名等
    #只允许此ip
    valid_referers none blocked 127.xxx.xxx.xx  #不进行防盗链
    if ($invalid_referer) {     #不满足情况下变量值为1 进行防盗链
        return 403;
    }
}

负载均衡 

#配置
语法:upstream name ...
默认:——
位置:http

upstream #自定义组名 {
    server x1.baidu.com;    #可以是域名
    server x2.baidu.com;
    #server x3.baidu.com
                            #down         不参与负载均衡
                            #weight=5;    权重,越高分配越多
                            #backup;      预留的备份服务器
                            #max_fails    允许失败的次数
                            #fail_timeout 超过失败次数后,服务暂停时间
                            #max_coons    限制最大的接受的连接数
                            #根据服务器性能不同,配置适合的参数

    #server 106.xx.xx.xxx;        可以是ip
    #server 106.xx.xx.xxx:8080;   可以带端口号
    #server unix:/tmp/xxx;        支出socket方式
}

缓存服务 

http {
    proxy_cache_path    /var/www/cache #缓存地址
                        levels=1:2 #目录分级
                        keys_zone=test_cache:10m #开启的keys空间名字:空间大小(1m可以存放8000个key)
                        max_size=10g #目录最大大小(超过时,不常用的将被删除)
                        inactive=60m #60分钟内没有被访问的缓存将清理
                        use_temp_path=pff; #是否开启存放临时文件目录,关闭默认存储在缓存地址

    server {
        ...
        location / {
            proxy_cache test_cache;    #开启缓存对应的名称,在keys_zone命名好
            proxy_cache_valid 200 304 12h;    #状态码为200 304的缓存12小时
            proxy_cache_valid any 10m;    #其他状态缓存10小时
            proxy_cache_key $host$uri$is_args$args;    #设置key值
            add_header Nginx-Cache "$upstream_cache_status";
        }
    }
}

当有个特定请求我们不需要缓存的时候,在上面配置的内容中加入以下配置

server {
    ...
    if ($request_uri ~ ^/(login|register) ) {    #当请求地址有login或register时
        set $nocache = 1;    #设置一个自定义变量为true
    }
    location / {
        proxy_no_cache $nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authoriztion;
    }
}

alias和root的区别 

location /request_path/image/ {
    root /local_path/image/;
}

#当我们访问 http://xxx.com/request_path/image/cat.png时
#将访问 http://xxx.com/request_path/image/local_path/image/cat.png 下的文件

location /request_path/image/ {
    alias /local_path/image/;
}

#当我们访问 http://xxx.com/request_path/image/cat.png时
#将访问 http://xxx.com/local_path/image/cat.png 下的文件

 rewrite

参考链接:https://blog.csdn.net/qq_41475058/article/details/89516051

关键字:

  • last:用replacement这个url 重新进行location匹配。 匹配到last后的url 再根据匹配的后进行 匹配
  • break:break指令停止当前脚本的执行,不再匹配。
  • redirect:返回302重定向。
  • permanent:返回301重定向。这个有利于seo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值