Mastering Nginx 笔记一----Nginx基础及location解释
2015-10-29 22:09
573 查看
Installing NGINX and Third-Party Modules
Installing NGINX using a package
manager
CentOS
Add the NGINX repository to your yum configuration by creating the following file:
Installing NGINX from source
I would therefore recommend the following configure options for a web
accelerator/proxy:
And the following for a web server:
installing third-party modules
1. Locate the module you would like to use (either search on https://github.com or see http://wiki.nginx.org/3rdPartyModules ).
2. Download the module.
3. Unpack the source.
4. Read the README file, if included. See if there are any dependencies
that you will need to install.
5. Configure NGINX to use the module as follows. /configure –add-
module=<path>
A Configuration Guide
The server_name directive is fairly straightforward, but can be used to solve a number
of configuration problems. Its default value is "" , which means that a server section
without a server_name directive will match a request that has no Host header field
set. This can be used, for example, to drop requests that lack this header:
server {
listen 80;
return 444;
}
The non-standard HTTP code, 444 , used in this example will cause NGINX to
immediately close the connection.
NGINX uses the following logic when determining which virtual server should
serve a specific request:
1. Match the IP address and port to the listen directive.
2. Match the Host header field against the server_name directive as a string.
3. Match the Host header field against the server_name directive with a
wildcard at the beginning of the string.
4. Match the Host header field against the server_name directive with a
wildcard at the end of the string.
5. Match the Host header field against the server_name directive as a regular
expression.
6. If all the Host headers match fail , then direct to the listen directive
marked as default_server .
7. If all the Host headers match fail and there is no default_server ,
direct to the first server with a listen directive that satisfies step 1.
Locations
The location directive may be used within a virtual server section and indicates a
URI that comes either from the client or from an internal redirect
A location is defined as follows:
location [modifier] uri {...}
Or for a named location:
location @name {…}
A named location is only reachable from an internal redirect. It preserves the URI
as it was before entering the location block. It may only be defined at the server
context level.
Location modifiers
Modifier Handling
= Use exact match and terminate search.
~ Case-sensitive regular expression matching.
~* Case-insensitive regular expression matching.
^~ Stops processing before regular expressions are
checked for a match of this location's string, if
it's the most specific match. Note that this is not
a regular expression match – its purpose is to
preempt regular expression matching.
表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1707894
Installing NGINX using a package
manager
yum install nginx
CentOS
Add the NGINX repository to your yum configuration by creating the following file:
vi /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1Preparing a build environment
yum install pcre-devel yum install zlib-devel yum install openssl-devel
Installing NGINX from source
I would therefore recommend the following configure options for a web
accelerator/proxy:
$ ./configure --with-http_ssl_module --with-http_realip_module --with- http_geoip_module --with-http_stub_status_module --with-openssl=${BUILD_ DIR}/openssl-1.0.1c
And the following for a web server:
$ ./configure --with-http_stub_status_module
installing third-party modules
1. Locate the module you would like to use (either search on https://github.com or see http://wiki.nginx.org/3rdPartyModules ).
2. Download the module.
3. Unpack the source.
4. Read the README file, if included. See if there are any dependencies
that you will need to install.
5. Configure NGINX to use the module as follows. /configure –add-
module=<path>
A Configuration Guide
The server_name directive is fairly straightforward, but can be used to solve a number
of configuration problems. Its default value is "" , which means that a server section
without a server_name directive will match a request that has no Host header field
set. This can be used, for example, to drop requests that lack this header:
server {
listen 80;
return 444;
}
The non-standard HTTP code, 444 , used in this example will cause NGINX to
immediately close the connection.
NGINX uses the following logic when determining which virtual server should
serve a specific request:
1. Match the IP address and port to the listen directive.
2. Match the Host header field against the server_name directive as a string.
3. Match the Host header field against the server_name directive with a
wildcard at the beginning of the string.
4. Match the Host header field against the server_name directive with a
wildcard at the end of the string.
5. Match the Host header field against the server_name directive as a regular
expression.
6. If all the Host headers match fail , then direct to the listen directive
marked as default_server .
7. If all the Host headers match fail and there is no default_server ,
direct to the first server with a listen directive that satisfies step 1.
Locations
The location directive may be used within a virtual server section and indicates a
URI that comes either from the client or from an internal redirect
A location is defined as follows:
location [modifier] uri {...}
Or for a named location:
location @name {…}
A named location is only reachable from an internal redirect. It preserves the URI
as it was before entering the location block. It may only be defined at the server
context level.
Location modifiers
Modifier Handling
= Use exact match and terminate search.
~ Case-sensitive regular expression matching.
~* Case-insensitive regular expression matching.
^~ Stops processing before regular expressions are
checked for a match of this location's string, if
it's the most specific match. Note that this is not
a regular expression match – its purpose is to
preempt regular expression matching.
表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1707894
相关文章推荐
- ubuntu+nginx+php+mysql安装配置方法命令
- Nginx之——413 修改上传文件大小限制
- Nginx缓存配置及nginx ngx_cache_purge模块的使用
- nginx easy 安装&简单分发配置
- Nginx性能提升--引入线程池性能提升9倍
- centos 6.5 编译安装了 Nginx1.6.0+MySQL5.6.19+PHP5.5.14
- nginx 优化
- saltstack 安装nginx
- 【转】nginx优化 突破十万并发
- Nginx配置性能优化
- Nginx负载均衡配置实例详解
- nginx 模块的加载与初始化
- Centos安装FastDFS+Nginx(一天时间搞定)
- Centos安装FastDFS+Nginx(一天时间搞定)
- Centos安装FastDFS+Nginx(一天时间搞定)
- nginx源码分析—内存池结构ngx_pool_t及内存管理
- nginx自编译安装
- 初识nginx负载均衡
- .net大型平台通过Nginx做负载均衡(Web层、中间服务层、DB层)
- CentOS 6.5 + Nginx 1.8.0 + PHP 5.6(with PHP-FPM) 负载均衡源码安装 之 (四)问题汇总