Nginx能干的事很多,很强大。官方文档详见点我。

Nginx的命令行参数

-? | -h 打印帮助信息
-c file 读取指定配置文件,而不是默认的nginx.conf
-g directives 从命令行直接读取配置,取代nginx.conf
-p prefix 指定工作目录 (默认是/usr/local/nginx)
-q 配置测试期间,禁止输出非错误信息
-s signal 发送信号给worker进程,其中signal真实信号名,也可以是stop(强制退出)、quit(优雅退出)、reload(重新加载配置)、reopen(重新打开log文件)
-t 测试配置文件是否正确
-T 同上,但是会同时输出整个配置文件
-v 打印版本号
-V 打印更多配置/编译信息

Nginx进程pid默认在以下文件中:

/usr/local/nginx/logs/nginx.pid

发送信号给master进程以控制worker进程,详见点我

Nginx如何处理一个连接?

如果有如下配置,那连接被代理到这三个里边的哪一个处理?是根据HTTP头部的HOST字段来判断的,如果没有HOST字段,那就默认第一个配置来处理,除非指定了default_server关键字。如果想决绝掉所有不带HOST字段的请求,那就配置一个server_name为空字符串"",然后return一个444状态码。

server {
listen 80;
server_name example.org www.example.org;
...
} server {
listen 80;
server_name example.net www.example.net;
...
} server {
listen 80;
server_name example.com www.example.com;
...
}

如果有如下配置,首先检测的是ip,其次才是server_name。

server {
listen 192.168.1.1:80;
server_name example.org www.example.org;
...
} server {
listen 192.168.1.1:80;
server_name example.net www.example.net;
...
} server {
listen 192.168.1.2:80;
server_name example.com www.example.com;
...
}

如果有如下配置,nginx会优先选择最匹配的uri。location /就能匹配所有url,那么优先级就最低,如果访问/xyz.php,那就交给cgi处理,如果访问/xyz.png,那就到/data/www目录下找。如果访问的是/,那么在/data/www目录下找index.html文件,找不到则匹配index.php,也就是交给cgi处理,因为location ~ \.php$更匹配。

server {
listen 80;
server_name example.org www.example.org;
root /data/www; location / {
index index.html index.php;
} location ~* \.(gif|jpg|png)$ {
expires 30d;
} location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}

server_name配置方法

如下配置,server_name 参数支持精确匹配、通配符、正则表达式。建议一行别写太多个参数,参数的个数是有限制的。

server {
listen 80;
server_name example.org www.example.org;
...
} server {
listen 80;
server_name *.example.org;
...
} server {
listen 80;
server_name mail.*;
...
} server {
listen 80;
server_name ~^(?<user>.+)\.example\.net$;
...
}

如果HTTP host匹配到多个server,则按如下顺序选择:

  • 精确匹配
  • 前置通配符,如*.example.com
  • 后置通配符,如mai.*
  • 首个正则表达式,根据在配置文件中出现的顺序

编写规则:

  • 通配符出现的位置只允许在字符串的头部或尾部,不允许出现在中间,如ww*.example.com。一个比较特殊的字符串.example.org,可以匹配example.org和*.example.org。
  • 正则表达式的开头必须是~,否则会被当做其他两种匹配方式。常用的有前置^和尾置$,.需要加转义字符\。
  • 用到大括号{}时需要为字符串加上双引号,如"~^(?<name>\w\d{1,3}+)\.example\.net$"

如下配置,是server_name变量捕捉的例子。

server {
server_name ~^(www\.)?(?<domain>.+)$; location / {
root /sites/$domain;
}
}

语法:

  • ?<name> Perl 5.10 compatible syntax, supported since PCRE-7.0
  • ?'name' Perl 5.10 compatible syntax, supported since PCRE-7.0
  • ?P<name> Python compatible syntax, supported since PCRE-4.0

Nginx能干啥?的更多相关文章

  1. Nginx入门介绍与安装

    Nginx是什么? Nginx是俄罗斯人编写的十分轻量级的HTTP和反向代理服务器.发音:"engine X" Nginx能干什么? (1)Http反向代理 Nginx 支持正则表 ...

  2. 几个点认识Nginx服务器

    Nginx 其实就是一款轻量级的 Web 服务器.反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用. 那么你可能会问了:“不是说 Nginx 吗?怎么又扯出来一个 W ...

  3. Nginx+lua+openresty精简系列

    1. CentOS系统安装openresty 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum update 命令).运行下面的 ...

  4. Openresty 与 Tengine

    Openresty 与 Tengine Openresty和Tengine基于 Nginx 的两个衍生版本,某种意义上他们都和淘宝有关系,前者是前淘宝工程师agentzh主导开发的,后者是淘宝的一个开 ...

  5. 004-nginx简介、安装配置【源码安装和mac安装】、基本使用

    一.概述 1.1.Nginx是什么 Nginx是一款轻量级的Web服务器,也是一款轻量级的反向代理服务器[常用]. 1.2.Nginx能干什么 Nginx能干的事情很多,这里简要罗列一些: 1:直接支 ...

  6. eshop6-nginx

    1. Nginx 是什么? Nginx 是一款轻量级Web服务器,也是一款反向代理服务器 2. Nginx 能干什么 可以直接支持Rails 和PHP 程序 可以作为HTTP反向代理 作为负载均衡服务 ...

  7. Nginx 相关介绍(Nginx是什么?能干嘛?)

    Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...

  8. Nginx 相关介绍(Nginx是什么?能干嘛?个人觉得写得比较好的文章,转载过来)

    Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...

  9. Nginx的mirror指令能干啥?

    mirror 流量复制 Nginx的 mirror 指令来自于 ngx_http_mirror_module 模块 Nginx Version > 1.13.4 mirror 指令提供的核心功能 ...

随机推荐

  1. Robot Framework(AutoItLibrary库关键字介绍)

    AutoItLibrary库关键字 AutoItLibrary 的对象操作大体上有几大主要部分,Window 操作.Control 操作.Mouse 操作.Process操作.Run 操作.Reg 操 ...

  2. 我java学习时的模样(一)

    学会敲键盘,能够实现盲打 程序员写代码,是通过键盘将程序输入到编辑器中,而码子的高效,能够让自己的思路更流畅一些.如果想从事IT工作,那面打字就必须得会,并且,如果还一个一个字母去找,上司就会认为是一 ...

  3. poj 3601 Tower of Hanoi

    Tower of Hanoi Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 1853   Accepted: 635 De ...

  4. 100行代码搞定抖音短视频App,终于可以和美女合唱了。

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老 ...

  5. Hibernate 一对多自身关联(同一表中子父目录树形结构)

  6. Handling of asynchronous events---reference

    http://www.win.tue.nl/~aeb/linux/lk/lk-12.html 12. Handling of asynchronous events One wants to be n ...

  7. Java入门系列-16-继承

    这一篇文章教给新手学会使用继承,及理解继承的概念.掌握访问修饰符.掌握 final 关键字的用法. 继承 为什么要使用继承 首先我们先看一下这两个类: public class Teacher { p ...

  8. log4j.properties 基本配置

    log4j.rootLogger=WARN,stdout,D log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender ...

  9. Java - 避免使用finalizer

    Finalizers are unpredictable ,often dangerous ,and generally unnecessary. 在Java中,GC会自动回收不可达对象相关的空间,而 ...

  10. 设置固定ip后无法上公网

    把电脑ip设置成固定ip后,发现其不能上公网,突然想到要设置DNS. 运行cmd程序,输入命令ipconfig /all查看此网络的DNS,设置固定ip 时添加此DNS地址即可.