nginx.txt

 server {
        listen      80;
        server_name IP  test.xhqb.com IP1;      #可以配置多个域名,和IP
        server_name_in_redirect  off;
        root /data/web/xhqb/htdocs;   
         if ($http_user_agent ~* "android|iphone|ipod|windows\sphone") {
            rewrite ^/$ http://$host/m/ redirect;   #如果来源的是 "android|iphone|ipod|windows\sphone") 是跳转域名下面的m站(忽略大小写),$http_user_agent 		#记录客户端浏览器的相关信息(相关配置)
        }


不兼容如下浏览器,如果出现则503错误。可以使用ietest测试
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 9.0;\ Windows\ NT\ 6.1\)") { return 503; }


	只要出现错误则跳转对应的错误页面/data/web/xhqb/htdocs/m 下面的文件
		error_page  400 = /m/400.html;
		error_page  404 = /m/404.html;
		error_page  500 = /m/500.html;
		error_page  502 = /m/502.html;
       	
	默认返回页面
	 index index.html;
        

        error_log  /data/log/web/xhqb/error.log;
        access_log /data/log/web/xhqb/access.log main;


	默认访问域名返回的主目录
        location / {
            root /data/web/xhqb/htdocs;
            index index.html;
        }


如果访问 域名下面/fp 则进行负载均衡调度  ~*忽略大小写     fingerprint  这是一个负载均衡的名字
location ~* ^\/fp {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://fingerprint;
	}


location ~* ^\/mallweb-app {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://mallweb;
	}
location ~* ^\/crawler {
#请求限速,如果请求数超过1,则后续全拒绝,则会出现412状态,412状态被error_page 接收/data/web/xhqb/htdocs/m/newerrorcode.json
		limit_req zone=crawips burst=1 nodelay;
		limit_req_status 412;
		error_page 412 /m/newerrorcode.json;
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://crawler;
		}
location ~* ^\/imageapi {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://imageapi;
	}
location ~* ^\/weixinh5 {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://weixinh5;
		}

location ~* ^\/callback\/ {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://callback;
}
location ~* ^\/mallmgr\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://mallmgr;
	}
location ~* ^\/sp/(.*) {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://health/$1;
		}
location ~* ^\/call {
		proxy_set_header        Host $host;  
		proxy_set_header        X-Real-IP $remote_addr;    
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://mall;
		}
   location ~* ^\/weixin {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://weixin;
                          } 
location ~* ^\/h5 {
		proxy_set_header Host $host;
		proxy_set_header X-Real-ip $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://h5;
		}
location ~* ^\/frontendcenterin {
		proxy_set_header Host $host;
		proxy_set_header X-Real-ip $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://frontendcenterin;
	}
location  ~* ^\/auth\/ {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://auth;
  }
    location ~* ^\/appsvr\/ {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://appsvr;
                             }   
    location ~* ^\/appmgr\/ {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://appmgr;
                            }   
location ~* ^\/CreditAssist-test {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://creditassist; 
		}

/api/app/v.*
location ~* ^\/api\/app\/v.* {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://jweAppServer;
	}

访问/api/app/getAdvert 则返回一个jose,return返回200状态,返回的内容如下(一堆乱码)
location ~* ^\/api\/app\/getAdvert {
		default_type application/jose;
		return 200 'eyJhbGciOiJSU0ExXzUiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoicnNhMiJ9.LE4SYeDfvJk0vWx14A6KZAWt6SWlpr4nyslj6opAwU8AGNrwCMVg0soh1bZ_QAKXjt3Z1d61lgvwVP0r9cFgSiu2N2K5Fbb2JKvG5o_tmC4aX0G3i3yWpxeZnoAlzgOMNgF5H5mdhJAW65HZQ7X_esXldw8PngldNHB8ERUh4rKRfZwQ5VP6emLj_9uJFc5HgVe5V0rPEoSS6aBha7SeKwc7CW081qbyRYy2jLBWcCgV1fTWIrEJJFYwNfxjtiy-jIWJZ66P9ajxBuvmfwYr9E8_KbM6GA11S3egvHLW-Qc3s63o2_ZWXcSw9wJcCLBMbLU4RNqsFkfXw7AEbN0YCg.KHcb3gqdHXqvW0Siw6AZrw.ThCL5VFQoyzJK89uqCr9rvZNwHSsJpo4P_GYYRU2YgTnnTbPZoPZNB-HZRolUMWyEBgWj5Q_aJUBNcGihYizVj2StByyf_EIn36Fkp1PvUDxorgXp6qeVbW8CSYriGCru5D3JiUG273TFlWeahEPmT1fgIjVLOtvChcUUV1mAsSCOug8jBWUVtv_UbJhAamv8DqMtH-2ZNmdpIajkRQ7pTBkSJXVTvEC2ECNt6R0-ff9gkAxbahJxZ8kJpiBTRM0UsFKvayXgfwbsdpG6lHTlgfneoCLnpFPIJyudXxKqzeX50oc632EmwtmM7q5-c396TWVARI31ZVkDmEajX--nDWaS1COHd02ABKL7MORq71UHq5M9C0k4KxZPiSELYpfnzipjbeAGZ6Fv3F3NGH5T2rHWcwZmiJOtxJcqgCywzbdMQ4hDOKnAWOeKKjEXu-eycXiXJ-7j1dYlj90bxLVzm8v0X00vXML2LDtcQ74v6vAOx605PNhzYtWXmExCfUZlA_FKqFPwhkcNUnJomQ-xbDf6HE36MZJbYgFZg2KJ8h47ud2B35N0IFoU4jXIcj-Gbr9sMdkPohhsOHYtgLcitCwtUlOT7zUuV9V1TCaxVCj_C4xrpkz3hFi-o9CvnTotQknIkDAlb3wiHdYPHF13mo_M6YgYC53uNr949Wi9eUjoU-H0k_3l4dNcuMHXQVxBbkmkmFN-xapEgW0NLDXwNpi6UjluUIhkCXSYGOMssmIvsnCOj-ZzBEOTKp0GNe8-UCv_MQP6i8lAAnXANhoBTN1IhIcEmJp7x7RlE5BhSnBHMIYrSSWhihbxTNEtMKX6OlDTx3Y889KTZoQbKoF7tyhDaEtmeanx7GHjM5uQHaltV5Bra3mu6hWBc-Owqt_Sh6eH7tNy-TZpn90cZuoNPUJ7g78JFM6KKTiUS3D2FKfyWyp5ZDNuX_L_QJsDlS8vCqZjoCKQiGIcn_P1TiA4O5l7QUtc3nmeWZq_PmyeDEqY6VOwRtLH1ETKq4qLTlk9UjDPhaxM72tvgJugi3lF7lFqLZzlVfnqQfVh4R68jmDSG3X-KR1NfjuAM2JPJ3-0oJ-HL9XiI-kRpNkpSVbxwFOMh_Pm35t3WfMfYv3-W75orVFurhXzqhxtaGg2j71fawtjsLtDZTJSuOXYQlX6q8qyn5ykvZwAoSanUQO3wCg7HBFtbKC8j8IPuRKDAXI6KbJhgWqQ_NhUSd0e2hIufT19_XZp-dS_tuXwmgyhs9wKU6SxeWGYDvunQmh_k7VJ0gUS_zPQmfZC0sOYBnsQX5b2za2aIsb47Q9XGWrc1hE_qubx9RYLxWG4LhACWUZVWoNrPrQaQOzv-AAgiIOVmQENgQbFssb-IGUkSJRWQyfY7Kf-GLlVxSdXL-27xGx6atUv197txJsT0DjDXE4ldPXI-mbOU_exHYS9VT13EgA1lNkIsERnxOx8zNfXuXW.H2jZ9ubuIjvg4C4iYuoMBg';
		}
location ~* ^\/api\/app {
		default_type application/jose;
		return 200 'eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiUlNBMV81In0.MVdye2n9hk9x9_gZjfRIpSFMXgDoAyFXdL5VBcrOKzRq8bpjKO_UBhwdu5-d__sn5Z3Dob2kqACXmibG89uy7AosPAdiIaO65aIHirBnR1uC3ibNX4CUCSI4VYV7OB-iORUv1hl5KhtwzOX9QcK8iOFiP7-RaLgR926c39MbqjwyxG_YgtkY4uChhCAVHsm3LxXTEZrCzTN6rTrmlNeUKYoAx6CyUgsBYO_6Dv6VvV-0BoU3aoj30ExOblE3C68_Wh6uSxRKSWEI7FoXxuND8Da_svL6iyBKknCij3ASPpZOT8gsEnVSi0i44p7mOmMWLhS-es-bNWDCzjUP941KLw.HNF8cle7Pr7Z-I7zDEYf2w.oR6a0jUR94bJM8WjLMvhzr0G8mHwSnnEf-ujgmhiAQAVMqZWgtIaJMUxWdmvlMzrJMsJ-7uccrO4ewNNna3A8IcuPPA7IMot8-CxBvqpHc52WNrrTqqc5OadFsoYKs5arRnEStx_7Q2efuTNtQ6vf4MkYfyD6aU_QQVY7cwP4TDKILEXviEP9qQxrrw0fZ2NIFoFQXg-aZ-NE9xKWt8kW6B0ljxjijo0CHQ_foY1_7w.lyK3aXfgm8Z0ZVQ5JqIFkg';
		}
location ~ /get_json {
		default_type application/json;
	return 200 '{eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiUlNBMV81In0.rg0bARf9trCQ3jXNSnXhUISJo3INSlep6tE38RRXQSJPKkaIFHjzCW9uLStdKyAVDolS-_pvUohSQNQ1YM1UTqcLqVJ9vkYffxYDe6lghEPF-kXSKmjoGq4Ho0u9FfN2xNu7uHl8HDGPWIhAGSArMDJ8uz6dhiD_qG1O5leQ7t7L6575jp5et85r5SAqy5OCIjNjjzRO-gJ-V8tsWSz6e0O8sazOjeFuuVHC7VgTH7COA_jYQ5IZ3ooU0kqNHo4Q86JNariomPw-HtTUlze0TXzObw_oOhkQqegF-0hNbfIDe6GyQriZNVPo5akZx_mgqp8F1EYS6pUk46sHvQLg-Q.sIyAuILZxp6DitWPdB_U6g.4We_zGm8cM9PGXyx5d1ESo9QBURQqxLTJ4VVcwnFFjl5TNGNzv-hZJnRTilaydpZKhDpyIaWoxofZ8mXSHYarMUXaI5oA1BAqKx78I-5KcBhA9zlXw3qvzSGYjKot9-MJOcjuTvkC1Ebd4pJvEUhiNeHz8aXBw6m1xKidph_VaE.xC5ZvA0A4wElqeQVG7zJ3Q}';
		}

如果访问(api|h5image|h5|frontendcenterin-biz-service-impl) 则通过负载下发给appsvr
location ~* ^\/(api|h5image|h5|frontendcenterin-biz-service-impl)\/ {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://appsvr;
       }
location ~* ^\/staff\/api {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://staff_api;
       }



访问/prod-mall-item/(.*),则先找本地是否存在该url,如果找不到则找@s3,@s3在location中定义
location ~* ^/prod-mall-item/(.*) {
	    try_files $uri @s3;
	}



@s3  亚马逊的存储。如下set都是自定义头部信息,proxy_set_header 发送给服务的头信息,中携带了存储的访问域名
location @s3 {
		set $s3_bucket        'prod-mall-item.s3.cn-north-1.amazonaws.com.cn';
		set $url_full         '$1';
		proxy_http_version     1.1;
		proxy_set_header       Host $s3_bucket;
		proxy_set_header       Authorization '';
		proxy_hide_header      x-amz-id-2;
		proxy_hide_header      x-amz-request-id;
		proxy_hide_header      Set-Cookie;
		proxy_ignore_headers   'Set-Cookie';
		proxy_buffering        off;
		proxy_intercept_errors on;
		resolver               8.8.8.8 114.114.114.114 valid=300s;
		resolver_timeout       10s;

		代理至后端       prod-mall-item.s3.cn-north-1.amazonaws.com.cn/    (test.jpg代表$url_full    $url_full =$1)
		proxy_pass             http://$s3_bucket/$url_full;
	}
location ~* ^\/gondarfront-in {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://gondarfront-in;
		}

#匹配大小写  .*\.(svn|git|cvs)  统统拒绝  比如 tt.svn  .git .cvs
location ~ .*\.(svn|git|cvs) {
		deny all;
        }

# 忽略大小写匹配   .*\.htm|html|xml|shtml   ->缓存 expires
location ~* \.(htm|html|xml|shtml)$ {
		expires 600;    秒
         }
location  ~* \.(js|css)$ {
	    expires 30d;      天
        }
location ~* \.(mp3|htc|gif|ico|png|swf|jpg|jpeg|bmp)$ {
         etag off;         关闭校验
        } 
   } 



server {
        listen      0.0.0.0:443;
        server_name IP  test.xhqb.com IP1;
        server_name_in_redirect  off;
        root /data/web/xhqb/htdocs;
        if ($http_user_agent ~* "android|iphone|ipod|windows\sphone") {
            rewrite ^/$ http://$host/m/ redirect;
        }
		error_page  400 = /m/400.html;
		error_page  404 = /m/404.html;
		error_page  500 = /m/500.html;
		error_page  502 = /m/502.html;
        index index.html;       
        error_log  /data/log/web/xhqb/error.log;
        access_log /data/log/web/xhqb/access.log main;
        ssl                  on;
        ssl_certificate /usr/local/nginx/conf/key/new/server.pem;
        ssl_certificate_key /usr/local/nginx/conf/key/new/server.key;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 5m;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        location / {
		index index.html;
        }
location ~* ^\/callback\/ {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://callback;
        }
location ~* ^\/mallmgr\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://mallmgr;
		}  
location ~* ^\/(m|mallh5)\/.*\.(eot|svg|ttf|woff|gif|png|bmp|jpg|jpeg|css|js|mp3|htc|ico|mov|mp4)$ {
		add_header Last-Modified "";
		etag off;
		}    
location ~* ^\/auth\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://auth;
  }
location ~* ^\/appsvr\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://appsvr;
		}                                                                                                             
location ~* ^\/appmgr\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://appmgr;
		}
location ~* ^\/hydra-web\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
	    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://hydra-web;
		}
location ~* ^\/(api|h5)\/ {
		proxy_set_header        Host $host;
		proxy_set_header        X-Real-IP $remote_addr;
		proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://appsvr;
       }
location ~ .*\.(svn|git|cvs) {
	    deny all;
        }
location ~* \.(htm|html|xml|shtml)$ {
		expires 600;
         }
location  ~* \.(js|css)$ {
		expires 30d;
        }
location ~* \.(mp3|htc|gif|ico|png|swf|jpg|jpeg|bmp)$ {
		expires 365d;
        }   
    }

posted @ 2020-05-20 10:14  看萝卜在飘  阅读(716)  评论(0编辑  收藏  举报