server { listen 80; 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; #如果来源的是 "android|iphone|ipod|windows\sphone") 是跳转域名下面的m站(忽略大小写) } 不兼容如下浏览器,如果出现则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; } }