当前位置 主页 > 服务器问题 > nginx问题汇总 >

    如何将 Nginx 配置为Web服务器的方法(3)

    栏目:nginx问题汇总 时间:2018-09-21 16:32

    一些常用的变量如下:

    变量名称 作用 $uri 请求中的当前URI(不带请求参数),它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如 /foo/bar.html。 $arg_name 请求中的的参数名,即“?”后面的arg_name=arg_value形式的arg_name $hostname 主机名 $args 请求中的参数值 $query_string 同 $args $request 代表客户端的请求地址 $request_uri 这个变量等于包含一些客户端请求参数的原始URI,它无法修改,不包含主机名,如:/cnphp/test.php?arg=freemouse。 ... ...

    一个简单的应用就是从 http 重定向到 https 时带上路径信息:

    server{  ...  return  301 https://lufficc.com$request_uri;  ...}

    返回特定状态码

    如果你的网站上的一些资源永久移除了,最快最简洁的方法就是使用 return 指令直接返回:

    location /wrong/url { return 404;}

    return 的第一个参数是响应代码。可选的第二个参数可以是重定向(对应于代码301,302,303和307)的 URL 或在响应正文中返回的文本。 例如:

    location /permanently/moved/url { return 301 http://www.example.com/moved/here;}

    return 指令可以包含在 location 和 server 上下文中:

    server{  location / {    return 404;  }}

    或者:

    server{  ...  return 404;  location / {   ...     }}

    错误处理

    error_page 命令可以配置特定错误码的错误页面,或者重定向到其他的页面。下面的示例将在 404 错误发生时返回 /404.html 页面。

    error_page 404 /404.html;

    error_page 命令定义了如何处理错误,因此不会直接返回,而 return 确实会立即返回。当代理服务器或者 Nginx 处理时产生相应的错误的代码,均会返回相应的错误页面。

    在下面的示例中,当 Nginx 找不到页面时,它将使用代码301替换代码404,并将客户端重定向到http://example.com/new/path.html 。 此配置很有用,比如当客户端仍尝试用旧的 URI 访问页面时,301代码通知浏览器页面已永久移除,并且需要自动替换为返回的新地址。

    location /old/path.html { error_page 404 =301 http:/example.com/new/path.html;}

    重写 URIs

    rewrite 指令可以多次修改请求的 URI。rewrite 的第一个参数是 URI需要匹配的正则表达式,第二个参数是将要替换的 URI。第三个参数可选,指示是否继续可以重写或者返回重定向代码(301或302)。例如:

    location /users/ { rewrite ^/users/(.*)$ /show?user=$1 break;}

    您可以在 server 和 location 上下文中包括多个 rewrite 指令。 Nginx 按照它们发生的顺序一个一个地执行指令。 当选择 server 时,server 中的 rewrite 指令将执行一次。

    在 Nginx 处理一组 rewrite 指令之后,它根据新的 URI 选择 location 。 如果所选 location 仍旧包含 rewrite 指令,它们将依次执行。 如果 URI 匹配所有,则在处理完所有定义的 rewrite 指令后,搜索新的 location 。