nginx https配置以及 api接口版本号rewrite

  • 在做APP的接口设计时,需要考虑不同版本会采用不同的接口API,调研了几种方式之后,采用了在http header里面增加application/json;version=vxx的方式来实现版本控制,这样做的好处是地址不用做变更,客户端只需要在header中增加声明使用的版本即可. 由于采用https是大势所趋,后台也增加了对https的支持, APP和后台的前端机器采用https通信, 前端机器到内网之间的通信还是走正常的http.
  • 版本控制部分的例子
    set $api_version ""; if ($http_accept ~ "application/json;version=((v([0-9]+\.)+[0-9]+))") { set $api_version $1; } location / { if ($api_version != "") { rewrite ^/mv/(.*)([^/])$ /mv/$api_version/$1$2/ last; } }
  • https 部分配置,需要nginx增加openssl支持,相关的key生成步骤网上比较多.
    server { listen 443; server_name _default; index index.jsp index.html index.htm; root /opt/web/; ssl on; ssl_certificate /usr/local/nginx/conf/server.crt; ssl_certificate_key /usr/local/nginx/conf/server.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; location ^~ /search/ { proxy_set_header X-Real-IP $remote_addr; proxy_pass http://text_search; } location / { include /usr/local/nginx/conf/proxy_resin.conf; proxy_pass http://api_backend; proxy_set_header X-Client-Verify SUCCESS; proxy_set_header X-Client-DN $ssl_client_s_dn; proxy_set_header X-SSL-Subject $ssl_client_s_dn; proxy_set_header X-SSL-Issuer $ssl_client_i_dn; } }

你可能感兴趣的:(nginx)