nginx的安装配置三部曲:点击即可查看

1、安装和配置文件的基础配置,ctrl+f搜索nginx

2、nginx文档如何查看 + 常用的配置方式(伪静态,反向代理,动静分离,防盗链,图片缓存,gzip图片压缩)

3、高级配置-》负载均衡

---------------------

server_name _; #不启用域名

指令-热启动

Nginx重新读取配置的命令

nginx -s reload

看文档的方法

gzip压缩文件模块的使用:

参考:nginx官方文档-》Modules reference-》ngx_http_gzip_module

语法详解

语法规则: location [=|~|~*|^~] /uri/ { … }

  • = 开头表示精确匹配

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

  • ~ 开头表示区分大小写的正则匹配                     以xx结尾

  • ~* 开头表示不区分大小写的正则匹配                以xx结尾

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

  • / 通用匹配,任何请求都会匹配到。

多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

首先精确匹配 =-》其次以xx开头匹配^~-》然后是按文件中顺序的正则匹配-》最后是交给 / 通用匹配。

当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

例子,有如下匹配规则:

location = / {#规则A
}
location = /login {#规则B
}
location ^~ /static/ {#规则C
}
location ~ \.(gif|jpg|png|js|css)$ {#规则D,注意:是根据括号内的大小写进行匹配。括号内全是小写,只匹配小写
}
location ~* \.png$ {#规则E
}
location !~ \.xhtml$ {#规则F
}
location !~* \.xhtml$ {#规则G
}
location / {#规则H
}

那么产生的效果如下:

访问根目录/, 比如http://localhost/ 将匹配规则A

访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

访问 http://localhost/static/a.html 将匹配规则C

访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C

访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。

访问 http://localhost/a.xhtml 不会匹配规则F和规则G,

http://localhost/a.XHTML不会匹配规则G,(因为!)。规则F,规则G属于排除法,符合匹配规则也不会匹配到,所以想想看实际应用中哪里会用到。

访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

所以实际使用中,个人觉得至少有三个匹配规则定义,如下:


  1. #直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。

  2. #这里是直接转发给后端应用服务器了,也可以是一个静态首页

  3. # 第一个必选规则

  4. location = / {

  5. proxy_pass http://tomcat:8080/index

  6. }

  7. # 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项

  8. # 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

  9. location ^~ /static/ {                     //以xx开头

  10. root /webroot/static/;

  11. }

  12. location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { //以xx结尾

  13. root /webroot/res/;

  14. }

  15. #第三个规则就是通用规则,用来转发动态请求到后端应用服务器

  16. #非静态文件请求就默认是动态请求,自己根据实际把握

  17. location / {

  18. proxy_pass http://tomcat:8080/

  19. }

nginx的其他配置信息介绍

三、ReWrite语法

last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301

1、下面是可以用来判断的表达式:

-f!-f用来判断是否存在文件
-d!-d用来判断是否存在目录
-e!-e用来判断是否存在文件或目录
-x!-x用来判断文件是否可执行

2、下面是可以用作判断的全局变量

例:http://localhost:88/test1/test2/test.php


  1. $host:localhost

  2. $server_port:88

  3. $request_uri:http://localhost:88/test1/test2/test.php

  4. $document_uri:/test1/test2/test.php

  5. $document_root:D:\nginx/html

  6. $request_filename:D:\nginx/html/test1/test2/test.php

附:一些可用的全局变量


  1. $args

  2. $content_length

  3. $content_type

  4. $document_root

  5. $document_uri

  6. $host

  7. $http_user_agent

  8. $http_cookie

  9. $limit_rate

  10. $request_body_file

  11. $request_method

  12. $remote_addr

  13. $remote_port

  14. $remote_user

  15. $request_filename

  16. $request_uri

  17. $query

一些常用的配置

1、普通的(静态的)http服务器

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


  1. server {

  2. listen 80;

  3. server_name localhost;

  4. client_max_body_size 1024M;

  5. location / {                

  6. root e:wwwroot;            //思路:通过/将所有的请求,转发给root处理

  7. index index.html;

  8. }

  9. }

2、反向代理

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方处理}
}

既然服务器可以直接HTTP访问,为什么要在中间加上一个反向代理,不是多此一举吗?反向代理有什么作用?

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

3、Redirect(重定向)语法


  1. server {

  2. listen 80;

  3. server_name start.igrow.cn;

  4. index index.html index.php;

  5. root html;

  6. if ($http_host !~ "^star\.igrow\.cn$" {

  7. rewrite ^(.*) http://star.igrow.cn$1 redirect;

  8. }

  9. }

4、防盗链

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

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


  1. location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {

  2. if (-f $request_filename) { //只能是文件,因为这用-f判断了

  3. expires 1h;

  4. break;

  5. }

  6. }

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

7、禁止访问某个目录


  1. location ~* \.(txt|doc)${

  2. root /data/www/wwwroot/linuxtone/test; #所有用户都禁止访问这个目录

  3. deny all;

  4. }

8、隐藏版本号的作用

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

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

9、配置https

1、去阿里云/腾讯云申请免费的

2、下载证书

3、证书放到/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时 直接访问e:wwwroot;,正则自行配置

server {  listen       80;  server_name  localhost;  location / {  root   e:wwwroot;  index  index.html;  }  # 所有静态请求都由nginx处理,存放目录为html  location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {  root    e:wwwroot;  }  # 所有动态请求都转发给tomcat处理  location ~ .(jsp|do)$ {  proxy_pass  http://test;  }  error_page   500 502 503 504  /50x.html;  location = /50x.html {  root   e:wwwroot;  }
}  

负载均衡

参考:nginx官方文档-》Modules reference-》ngx_http_upstream_module

请点击参考我这篇博客

nginx location配置详细解释相关推荐

  1. nginx location 配置详细解释

    语法规则: location [=|~|~*|^~] /uri/ { - } = 开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因 ...

  2. php localtion,详解Nginx Location配置

    今天有一位同学问到 Nginx 的站点多路径匹配的问题? 1.www.domain.com/a 需要返回 /var/www/domain.com/a/index.html 2.www.domain.c ...

  3. nginx location配置 - ttlsa教程系列之nginx

    为什么80%的码农都做不了架构师?>>>    今天讲下location的用法,部分内容是直接从网络上摘取的,这边做了一个整理,为了便于理解和学习,我这边做了一些例子. 语法规则: ...

  4. Nginx Location配置总结

    转载至http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html 语法规则: location [=|~|~*|^~] /uri/ { - }   转载至 ...

  5. nginx location 配置path,如不带斜杆访问,出现异常

    问题举例: location 配置了 ^~/mobile 访问: http://yourdomain/mobile/  正常: 访问: http://yourdomain/mobile  异常,ngi ...

  6. Nginx域名配置详细介绍

    前言 1.基本命令 1.1.启动 Linux ./nginx -c conf/nginx.conf windows start nginx 1.2.停止 ./nginx -s stop 1.3.有序退 ...

  7. Nginx——location配置

    1.基本语法 location [=|~|~*|^~|@] pattern {--} 其中,[=|~|~*|^~|@]被称作location modifier,这会定义Nginx如何去匹配其后的pat ...

  8. nginx location 配置

    location匹配顺序 "="前缀指令匹配,如果匹配成功,则停止其他匹配 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配) ...

  9. nginx location 配置中 try_files, alias, root, index 的

    需求场景 朋友让我帮忙挂一个网页,有点类似"钓鱼"的性质(开玩笑,没这么严重),就是找一个类似的域名,把原网站其中一个网页完全复制过来,修改其中的内容,然后给甲方看.但是,这个新域 ...

最新文章

  1. 一篇简单易懂的原理文章,让你把JVM玩弄与手掌之中
  2. 2018年,关于CAP最精彩的小故事!
  3. 解决oracle主键问题,解决renren-security使用oracle主键问题
  4. php将上传的图片转为base64,html5实现把上传的图片转成base64编码在显示(代码实例)...
  5. boost::geometry::topological_dimension用法的测试程序
  6. 理解Linux系统的日志
  7. postman和部署在 SAP 云平台上的SAP UI5应用发送同样的HTTP请求,为何前者成功,后者失败?
  8. C++11使用互斥量保护共享数据
  9. c语言三阶素数魔方阵,用C语言构造3*3素数魔方阵,即找出9个不大于500的素数并排成魔方阵。...
  10. mysql 获取年预提,【判断题】正确核算待摊费用和预提费用,有助于划分本期费用与非本期费用的界限。...
  11. div水平垂直居中的六种方法
  12. 如何优雅的在java中统计代码块耗时
  13. linux 3.10的kdump配置的小坑
  14. Jquery 中each循环嵌套的使用示例教程
  15. Ubuntu 16.04 Apache https证书安装
  16. LayaAir 对象池 laya.utils.Pool
  17. 【图像去噪】基于matlab GUI均值+中值+高通低通+巴特沃斯+PCA+小波+维纳滤波图像去噪【含Matlab源码 1705期】
  18. 【qq语音获取好友ip】wireshark
  19. java cximage_图像处理库比较 OpenCV CxImage ImageMagick CImg FreeImage
  20. Win10精确式触摸板安装

热门文章

  1. 跨境电商和独立站哪个好?
  2. 吴恩达|机器学习作业2.0Logistic 回归
  3. 大数据行业到底有多少种工作岗位,各自的技能需求是什么?
  4. 教你如何处理Zabbix添加key总是not supported
  5. 自动化测试--封装getDriver的方法
  6. 基于Ext JS的模块化应用框架搭建及开发
  7. Teamcenter(Enterprise 2007) 开发之- 快速搭建开发环境(windows)
  8. 安装iis 出现ASP无法访问的解决方法
  9. signature=cb97f07fbd7b371e6311b0d8707b6398,vue 汉字转拼音(filter)
  10. 山大计算机学院副院长屠长河,留学交流系列——山东大学计算机学院访问澳门大学...