liuming794 发表于 2018-10-20 13:52:22

浅谈Nginx(二)—http下server配置

1)proxy_pass URL;       # 完成URL映射  
            Context:    location, if in location, limit_except
  

  
            注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机;
  

  
                例:
  
                server {
  
                  ...
  
                  server_name HOSTNAME;
  
                  location /uri/ {
  
                        proxy http://hos[:port];
  
                  }
  
                  ...
  
                }
  

  
                http://HOSTNAME/uri --> http://host/uri
  

  
       ======================================================================
  
            proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;
  

  
                server {
  
                  ...
  
                  server_name HOSTNAME;
  
                  location /uri/ {
  
                        proxy http://host/new_uri/;
  
                  }
  
                  ...
  
                }
  

  
                http://HOSTNAME/uri/ --> http://host/new_uri/
  
       =====================================================================
  

  

  
    ===============================================================
  
            如果location定义其uri时使用了正则表达式的模式,则proxy_pass之后必须不能使用uri; 用户请求时传递的uri将直接附加代理到的服务的之后;
  

  
                server {
  
                  ...
  
                  server_name HOSTNAME;
  
                  location ~|~* /uri/ {
  
                        proxy http://host;
  
                  }
  
                  ...
  
                }
  

  
                http://HOSTNAME/uri/ --> http://host/uri/;
  
    ==================================================================
  

  
      2)proxy_set_header field value;
  
            设定发往后端主机的请求报文的请求首部的值;Context:   http, server, location
  

  
            proxy_set_header X-Real-IP$remote_addr;
  
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  

  
      3)proxy_cache_path
  
            定义可用于proxy功能的缓存;Context:    http
  

  
            proxy_cache_path path keys_zone=name:size ;
  

  
      4)proxy_cache zone | off;
  
            指明要调用的缓存,或关闭缓存机制;Context:   http, server, location
  

  
      5)proxy_cache_key string;
  
            缓存中用于“键”的内容;
  

  
            默认值:proxy_cache_key $scheme$proxy_host$request_uri;
  

  
      6)proxy_cache_valid time;
  
            定义对特定响应码的响应内容的缓存时长;
  

  
            定义在http{...}中;
  
            proxy_cache_path /var/cache/nginx/proxy_cache levels=1:1:1 keys_zone=pxycache:20m max_size=1g;
  

  
            定义在需要调用缓存功能的配置段,例如server{...};
  
            proxy_cache pxycache;
  
            proxy_cache_key $request_uri;
  
            proxy_cache_valid 200 302 301 1h;
  
            proxy_cache_valid any 1m;
  

  
      7)proxy_cache_use_stale
  
            定义用过期的内容响应客户端,例如:服务器错误或无响应,nginx可用缓存响应客户端
  
            proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off ...;
  

  
            Determines in which cases a stale cached response can be used when an error occurs during communication with the proxied server.
  

  
      8)proxy_cache_methods GET | HEAD | POST ...;
  
            针对方法做代理
  
            If the client request method is listed in this directive then the response will be cached. “GET” and “HEAD” methods are always added to the list, though it is recommended to specify them explicitly.
  

  
      9)proxy_hide_header field;
  
            请求或响应中可以隐藏后端服务器报文内容
  
            By default, nginx does not pass the header fields “Date”, “Server”, “X-Pad”, and “X-Accel-...” from the response of a proxied server to a client. The proxy_hide_header directive sets additional fields that will not be passed.
  
            例:
  
                location/ {
  
                  proxy_hide_header Server;
  
                }
  

  
      10)proxy_connect_timeout time;
  
            nginx代理服务器等待后端服务器响应时长;
  
            Defines a timeout for establishing a connection with a proxied server. It should be noted that this timeout cannot usually exceed 75 seconds.
  

  
            默认为60s;


页: [1]
查看完整版本: 浅谈Nginx(二)—http下server配置