共计 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 图片返回给客户端
如果我访问
的话,nginx 就会返回文件目录中 /data/www/ 下面的 example.html 图片返回给客户端http://localhost/some/example.htm
l
listen 可以不指定,默认是 8080
如果在运行期间修改了配置运行
nginx -s reload
如果配置验证通,但没有按照约定访问到指定的文件可以查看 /usr/local/nginx/logs
或 /var/log/nginx
下面的日志文件 access.log
和error.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.htm
l 访问的资源 其实是
获取的资源,这些对客户端是透明的。http://localhost/some/example.htm
l
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-08/105467p2.htm
4,主机名
服务器名称通过 server_name 指令指定,它决定哪个 server 来处理哪个请求.server_name 可以通过通配符,正则指定。
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$; ... }
server {
当一个请求同时满足多个主机名的时候优先选择的主机名有如下顺序。
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;
}
}
正则表达捕获可以支持如下的语法
?< |
Perl 5.10 compatible syntax, supported since PCRE-7.0 |
?' |
Perl 5.10 compatible syntax, supported since PCRE-7.0 |
?P< |
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 图片返回给客户端
如果我访问
的话,nginx 就会返回文件目录中 /data/www/ 下面的 example.html 图片返回给客户端http://localhost/some/example.htm
l
listen 可以不指定,默认是 8080
如果在运行期间修改了配置运行
nginx -s reload
如果配置验证通,但没有按照约定访问到指定的文件可以查看 /usr/local/nginx/logs
或 /var/log/nginx
下面的日志文件 access.log
和error.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.htm
l 访问的资源 其实是
获取的资源,这些对客户端是透明的。http://localhost/some/example.htm
l
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-08/105467p2.htm