nginx部分功能配置备忘

  1. 跨域配置(POST方式)

    add_header 'Access-Control-Allow-Headers' 'Content-Type';
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'POST';

  2. 静态文件访问

    location /login {
    alias /data/nginx_data/html/hebei/admin/;
    index index.html ;
    break ;
    }

  3. 文件上传

    upstream xxxxx{
    server 127.0.0.1:10013;
    }
    location =/api/xxx/user/headimg {
    client_max_body_size 3M;
    proxy_pass http://xxxxx/user/headimg;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_set_header api_version $http_api_version ;
    proxy_set_header api_version $http_apiversion ;
    proxy_connect_timeout 20s; #连接超时 默认为60秒
    proxy_read_timeout 20s; #读取超时 默认为60秒
    proxy_send_timeout 20s; #发送超时 默认为60秒
    break;
    }

  4. 路径重定向

    location /zc {
    rewrite '.*' 'http://www.baidu.com';
    }

    location /static/upload/ {
    rewrite ^/static/upload/(.*)$ http://www.xxx.com/api/static/upload/$1 redirect;
    }

  5. 文件服务器

    upstream file.static {
    server 127.0.0.1:38088 ;
    }
    proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=1g;
    location /api/static_file/ {
    proxy_pass http://file.static/;
    proxy_method GET;
    access_log off;
    expires 30d;
    proxy_cache imgcache;
    proxy_cache_valid 200 302 1d;
    proxy_cache_valid 404 10m;
    proxy_cache_valid any 1h;
    proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
    break ;
    }
    server{
    listen 38088;
    charset UTF-8 ;
    location / {
    default_type 'application/json;charset=UTF-8';
    alias /data/nginx_data/html/static/;
    break;
    }
    }

  6. svn代码服务器

    location / {
    proxy_pass http://svn/ ;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
    proxy_set_header X-Real-IP $remote_addr ;
    proxy_set_header Host $http_host ;

    client_max_body_size 1024M;
    proxy_connect_timeout 9999s; #连接超时 默认为60秒
    proxy_read_timeout 9999s; #读取超时 默认为60秒
    proxy_send_timeout 9999s; #发送超时 默认为60秒

    break;
    }

  7. root和alias区别(原文链接)
    nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:
    [root]
    语法:root path
    默认值:root html
    配置段:http、server、location、if
    [alias]
    语法:alias path
    配置段:location

    root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
    root的处理结果是:root路径+location路径
    alias的处理结果是:使用alias路径替换location路径
    alias是一个目录别名的定义,root则是最上层目录的定义。
    还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

    root实例:

    location ^~ /t/ {
    root /www/root/html/;
    }

    如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

    alias实例:

    location ^~ /t/ {
    alias /www/root/html/new_t/;
    }
    如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。
    注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

    注意:
    (1)使用alias时,目录名后面一定要加"/"。
    (2)alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
    (3)alias只能位于location块中。(root可以不放在location中)

    nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:
    1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
    2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
    3)alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面
    加不加"/"不影响访问,访问时它会自动加上"/";但是如果location匹配的path目录后面加上"/",
    那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!
    4)root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。

    举例说明(比如nginx配置的域名是www.wangshibo.com):
    示例一
    location /huan/ {
    alias /home/www/huan/;
    }

    在上面alias虚拟目录配置下,访问http://www.wangshibo.com/huan/a.html实际指定的是/home/www/huan/a.html。
    注意:alias指定的目录后面必须要加上"/",即/home/www/huan/不能改成/home/www/huan

    上面的配置也可以改成root目录配置,如下,这样nginx就会去/home/www/huan下寻找http://www.wangshibo.com/huan的访问资源,两者配置后的访问效果是一样的!
    location /huan/ {
    root /home/www/;
    }

posted @ 2018-12-20 10:54  CalronLoveRonnie  阅读(170)  评论(0)    收藏  举报
AmazingCounters.com