阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx使用指南

128次阅读
没有评论

共计 6152 个字符,预计需要花费 16 分钟才能阅读完成。

1,运行 nginx

可以运行 nginx 命令开启 nginx:

nginx

如果 nginx 已经开启了,可以运行 nginx 命令加 -s 参数来控制 nginx 的运行

nginx -s signal

signal 的值: 

  • stop — 快速关闭
  • quit — 优雅的关闭
  • reload — 重新加载配置文件
  • reopen — 重新打开日志文件

例如:要等 nginx 处理完当前的请求后关闭 nginx 可以用下面的命令 

nginx -s quit 

修改了配置文件后需要运行下面的命令

nginx -s reload 

 

2,简单配置 nginx

打开配置文件,一般在 /etc/nginx/nginx.cnf 中,依照自己安装参数而定。

nginx.conf 中已经包含了一个 server 块的配置案例,不过是注释掉的。下面是一个 server 块的基本配置 

http {server {
    }
} 

server 块下面可以配置一些 location 来指定请求 url 对应的本地资源 

location / {root /data/www;}

上面表示所有的 / 下面的访问资源都在 /data/www 文件夹下面 

location /images/ {root /data;}

这个表示所有 /images/ 路径访问的图片都在 /data 下面 

那么上面的统一配置就是

server {
listen 8080;
location / {root /data/www;} 
location /images/ {root /data;}
}

如果我访问 http://localhost/images/example.png 的话,nginx 就会返回文件目录中 /data/images/ 下面的 example.png 图片返回给客户端

如果我访问 http://localhost/some/example.html 的话,nginx 就会返回文件目录中 /data/www/ 下面的 example.html 图片返回给客户端

listen 可以不指定,默认是 8080

如果在运行期间修改了配置运行

nginx -s reload 

如果配置验证通,但没有按照约定访问到指定的文件可以查看 /usr/local/nginx/logs 或 /var/log/nginx下面的日志文件 access.logerror.log

————————————– 分割线 ————————————–

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

————————————– 分割线 ————————————–

3,配置反向代理 

server {
    location / {proxy_pass http://localhost:8080;}

    location /images/ {root /data;}
} 

proxy_pass 指定反向代理的路径,所有符合 / 的路径都会到 http://localhost:8080 中获取资源

如:http://192.168.1.100/some/example.html 访问的资源 其实是 http://localhost/some/example.html获取的资源,这些对客户端是透明的。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-08/105467p2.htm

4,主机名

服务器名称通过 server_name 指令指定,它决定哪个 server 来处理哪个请求.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$;
    ...
}

当一个请求同时满足多个主机名的时候优先选择的主机名有如下顺序。

 

1,全名称,准确的名称。

2,最长的通过 * 开头的通配符名称“*.example.org

3,最长的通过 * 结尾的通配符名称“mail.*

4,第一个匹配正则表达式的虚拟主机名

通配符只能在主机名的开始和结束使用,“www.*.example.org”和“w*.example.org”都是错误的写法,如果需要匹配这种模式可以通过正则表达式指定,如“~^www\..+\.example\.org$”and“~^w.*\.example\.org$”。星号代理主机名的一部分“*.example.org”不仅代表 www.example.com 还代表 www.sub.example.com.example.org既可以代表 example.org 也可以代表 *.example.org。

如果要使用正则表达式,主机名必须以波浪符~ 开始

server_name  ~^www\d+\.example\.net$;

如果不是以波浪符号~ 还是,那么它被认为是一个全主机名。

 

如果正则表达式主机名中包含 *, 那么它被认为是一个通配符主机名。^ 和 $ 是必需的,他们是语法和逻辑上的要求。

通过正则捕获可以再后面的变量中引用

 

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

正则捕获也可以通过数字参数获取

 

 

server {
    server_name   ~^(www\.)?(.+)$;

    location / {root   /sites/$2;
    }
}

$2 匹配第二个括号中的正则表达式匹配的内容。

 

混合主机名

 

server {
    listen       80;
    server_name  example.org  www.example.org  "";
    ...
}

如果 nginx 没有可以匹配请求的 url 主机名的 server 模块,则默认返回空的主机名来响应请求。

 

如果用户通过 ip 访问,这 server_name 可以配置 ip 主机名来响应请求

 

server {
    listen       80;
    server_name  example.org
                 www.example.org
                 ""
                 192.168.1.1
                 ;
    ...
}

- 表示的主机名代表了所有错误的主机名

 

 

server {
    listen       80  default_server;
    server_name  _;
    return       444;
}

 

在有些时候你可能会访问 *.example.com 但其中包好 www.example.com 和 example.com 且这两个访问跟频繁,最好配置成这样

 

server {
    listen       80;
    server_name  example.org  www.example.org  *.example.org;
    ...
}

而不要是这样

 

 

server {
    listen       80;
    server_name  .example.org;
    ...
}

 

如果主机名过长需要在 http 模块中修改参数

server_names_hash_bucket_size

这个参数的值可以使 32 或 64,取决于你的 cpu 缓存栈的大小

 

如果你将他设为 32,但你的服务器名称很长如:too.long.server.name.example.org,那么它会报错

 

could not build the server_names_hash,
you should increase server_names_hash_bucket_size: 32

你必须要把它的参数设成两倍

 

http {server_names_hash_bucket_size  64;
    ...

 

如果配置的主机名过多就会报这个错

 

could not build the server_names_hash,
you should increase either server_names_hash_max_size: 512
or server_names_hash_bucket_size: 32

解决方法是尽可能地将 server_names_hash_max_size 设置的和主机名的个数一样,如果这个配置起不了做用,或配置后导致 nginx 的启动时间过长的话,就增加 server_names_hash_bucket_size 的值

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

1,运行 nginx

可以运行 nginx 命令开启 nginx:

nginx

如果 nginx 已经开启了,可以运行 nginx 命令加 -s 参数来控制 nginx 的运行

nginx -s signal

signal 的值: 

  • stop — 快速关闭
  • quit — 优雅的关闭
  • reload — 重新加载配置文件
  • reopen — 重新打开日志文件

例如:要等 nginx 处理完当前的请求后关闭 nginx 可以用下面的命令 

nginx -s quit 

修改了配置文件后需要运行下面的命令

nginx -s reload 

 

2,简单配置 nginx

打开配置文件,一般在 /etc/nginx/nginx.cnf 中,依照自己安装参数而定。

nginx.conf 中已经包含了一个 server 块的配置案例,不过是注释掉的。下面是一个 server 块的基本配置 

http {server {
    }
} 

server 块下面可以配置一些 location 来指定请求 url 对应的本地资源 

location / {root /data/www;}

上面表示所有的 / 下面的访问资源都在 /data/www 文件夹下面 

location /images/ {root /data;}

这个表示所有 /images/ 路径访问的图片都在 /data 下面 

那么上面的统一配置就是

server {
listen 8080;
location / {root /data/www;} 
location /images/ {root /data;}
}

如果我访问 http://localhost/images/example.png 的话,nginx 就会返回文件目录中 /data/images/ 下面的 example.png 图片返回给客户端

如果我访问 http://localhost/some/example.html 的话,nginx 就会返回文件目录中 /data/www/ 下面的 example.html 图片返回给客户端

listen 可以不指定,默认是 8080

如果在运行期间修改了配置运行

nginx -s reload 

如果配置验证通,但没有按照约定访问到指定的文件可以查看 /usr/local/nginx/logs 或 /var/log/nginx下面的日志文件 access.logerror.log

————————————– 分割线 ————————————–

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

————————————– 分割线 ————————————–

3,配置反向代理 

server {
    location / {proxy_pass http://localhost:8080;}

    location /images/ {root /data;}
} 

proxy_pass 指定反向代理的路径,所有符合 / 的路径都会到 http://localhost:8080 中获取资源

如:http://192.168.1.100/some/example.html 访问的资源 其实是 http://localhost/some/example.html获取的资源,这些对客户端是透明的。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-08/105467p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计6152字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中