cencenhai 发表于 2018-11-13 12:29:28

Mastering Nginx 笔记一----Nginx基础及location解释

  Installing NGINX and Third-Party Modules
  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  

  
   
  
    name=nginx repo
  
    baseurl=http://nginx.org/packages/centos/6/$basearch/
  
    gpgcheck=0
  
    enabled=1
  Preparing a build environment
yum install pcre-devel  
yum install zlib-devel
  
yum install openssl-devel
  Installing NGINX from source
  I would therefore recommend the followingconfigure 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 seehttp://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=
  A Configuration Guide
  Theserver_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 aserver_name directive will match a request that has noHost 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 thelisten directive.
  2. Match theHost header field against theserver_name directive as a string.
  3. Match theHost header field against theserver_name directive with a
  wildcard at the beginning of the string.
  4. Match theHost header field against theserver_name directive with a
  wildcard at the end of the string.
  5. Match theHost header field against theserver_name directive as a regular
  expression.
  6. If all theHost headers matchfail , then direct to thelisten directive
  marked asdefault_server .
  7. If all theHost headers matchfail and there is nodefault_server ,
  direct to the first server with alisten directive that satisfies step 1.
  Locations
  Thelocation 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 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匹配到(注意是空格)。
  
  
  


页: [1]
查看完整版本: Mastering Nginx 笔记一----Nginx基础及location解释