JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

非常有用的ngxin配置

wys521 2024-09-12 23:16:02 精选教程 27 ℃ 0 评论

接上篇,铜锭四通后,雪微研究了下nginx配置。

文档有点长,建议阅读时间10分钟。

开启gzip功能,能够将前端传输的数据大小压缩一半甚至更少,降低了带宽要求,让访问更轻、更快,体验很舒服:

gzip on; #开启

gzip_buffers 8 16k;#超过128k的文件不压缩

gzip_comp_level 2;#压缩级别,越大压缩越好,时间也越长,1~10

gzip_min_length 512;#大于512B才压缩

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 off;#在Header里增加“Vary:Accept-Encoding”

gzip_disable "MSIE [1-6]\.";#IE6不压缩

location语法

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)

~ 开头表示区分大小写的正则匹配

~* 开头表示不区分大小写的正则匹配

!~和!~* 分别为区分大小写不匹配及不区分大小写不匹配的正则

/ 用户所使用的代理(一般为浏览器)

$http_x_forwarded_for 可以记录客户端IP,通过代理服务器来记录客户端的ip地址

$http_referer 以记录用户是从哪个链接访问过来的

规则匹配的优先级:

1、 先校验 =(精准命中),如果命中,立即返回结果并结束解析过程。

2、 校验普通命中,如果有多个命中,“记录”下来“最长”的命中结果(记录但不结束,最长的为准)。

3、 继续校验正则表达式的解析结果,按配置里的正则表达式顺序为准,由上至下开始匹配,一旦匹配成功到,立即返回结果,并结束解析过程。

4、 普通命中无顺序,是因为按命中的长短来确定。正则命中,要按照顺序,因为是从前入往后命中的。

比较常见的配置,带实例:

一、http 普通、静态的配置

这样如果访问http://localhost 就会默认访问到根目录webroot目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。


server {    listen       80;                                                             server_name  localhost;                                                   client_max_body_size 1024M;      location / {                           root   /webroot;            //思路:通过/将所有的请求,转发给root处理           index  index.html;       }}


二、反向代理


localhost的时候,就相当于访问localhost:8080了

server {  
    listen       80;                                                         
    server_name  localhost;                                               
    client_max_body_size 1024M;

    location / {
        proxy_pass http://localhost:8080;   
        proxy_set_header Host $host:$server_port;    //思路:通过/,将所有的请求,转发给第3方处理
    }
}

反向代理的作用很多。

负载均衡、虚拟主机等,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。

3、Redirect重定向语法


server {    listen 80;    server_name start.igrow.cn;   
        index index.html index.php;    root html;    
        if ($http_host !~ "^star\.igrow\.cn#34; {        
            rewrite ^(.*) http://www redirect;   
       }}


4、防盗链语法实现

location ~* \.(gif|jpg|png|bmp)$ {
    valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;
    if ($invalid_referer) {
        return 403;
    }
}

5、根据文件类型设置过期时间

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {   
  if (-f $request_filename) {    
    //只能是文件,因为这用-f判断了        
    expires 1h;        break;    
  }}


6、设置图片缓存/过期时间

7、禁止访问前端某个目录

location ~* \.(txt|doc)${root /data/www/wwwroot/linuxtone/test;  #所有用户都禁止访问这个目录deny all;}


8、隐藏nginx版本号

通过你所用的nginx版本,找其漏洞,进行攻击你

在http中添加该配置:server_tokens off;


9、配置https的步骤


1、去网上(阿里云或者腾讯云)申请免费证书

2、下载免费证书放到/usr/local/nginx目录下(就是和conf同级,nginx.conf默认的配置文件的上一级)

4、在vhost目录下加入配置文件

server {
 listen 443;
 server_name lampol.edu0532.cn; #改域名
 ssl on;
 root /home/www/xcxtp5/public; #改项目路径
 ssl_certificate ../certbo/1523694051089.pem;    #改证书路径
 ssl_certificate_key ../certbo/1523694051089.key; #改私钥路径
 ssl_session_timeout 5m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
        location / {
            index  index.html index.htm index.php;
            autoindex  on;
            # 伪静态配置  
            if (!-e $request_filename) {
                rewrite  ^(.*)$  /index.php?s=$1  last;
                break;
            }
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }

}

10、动静分离

设计:动态、静态的文件,请求时匹配不同的目录

当访问gif,jpeg时 直接访问/webroot;,正则自行配置

server {  
  listen       80;  
  server_name  localhost;  

  location / {  
      root   /webroot;  
      index  index.html;  
  }  

  # 所有静态请求都由nginx处理,存放目录为html  
  location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  
      root    /webroot;  
  }  

  # 所有动态请求都转发给tomcat处理  
  location ~ .(jsp|do)$ {  
      proxy_pass  http://ip:port;  
  }  

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表