• 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/;
       }
  • 相关阅读:
    神武
    position 属性
    C# 工作区和窗口的属性名
    魔兽世界命令行
    Dota2一直 正在登录服务器的解决办法
    dota2交换物品
    Servlet的5种方式实现表单提交(注册小功能)
    JQuery的ajaxFileUpload的使用
    JS日期转换
    Tomcat7后台通过get接收数据处理乱码
  • 原文地址:https://www.cnblogs.com/cuiyf/p/10148046.html
Copyright © 2020-2023  润新知