nginx泛解析域名实现多级域名多个域名跳转

需求如下:

650) this.width=650;" src="http://img.voidcn.com/vcimg/static/loading.png" title="111111.png" alt="wKiom1lxV4eRpqBtAAAmiQOWUlM999.png-wh_50" data-src="https://s4.51cto.com/wyfs02/M02/9C/7D/wKiom1lxV4eRpqBtAAAmiQOWUlM999.png-wh_500x0-wm_3-wmp_4-s_991819238.png">

由于之前泛解析有上百个域名需要向上图所示的这种需求,所以需要一个通用方法进行处理。思路如下:

1,首先通过Nginx获取到所有泛解析的二级子域名

2,通过Nginx的 proxy_set_header 自定义变量获取请求url主机头部

3,后端使用程序获取Nginx传递过来的url主机头,进行跳转至www.csdn.net/topics*.html

操作如下:

  1. * 泛解析在DNS中解析到Nginx服务器

  2. 添加Nginx配置文件


  3. upstream x {

  4. server 10.0.0.x:6096; 这里的6096是后端服务,后端程序会通过$subdomain获取到abc,qedd,等主机头部,然后进行跳转


  5. }

  6. server {

  7. server_name ~^(?<subdomain>.+).yourdomain.com$;

  8. listen 80;

  9. access_log logs/testb.access.log main;

  10. error_log logs/testb.error.log;

  11. location = /favicon.ico {

  12. alias /root/org/favicon.ico;

  13. }


  14. error_page 500 502 503 504 /500.html;

  15. location /500.html {

  16. internal;

  17. }

  18. error_page 404 /404.html;

  19. location = /robots.txt {

  20. alias /usr/local/webserver/nginx/conf/robots.txt;

  21. }

  22. location / {

  23. proxy_pass_header Server;

  24. proxy_set_header Host $http_host;

  25. proxy_redirect off;

  26. proxy_set_header X-Real-IP $remote_addr;

  27. proxy_set_header X-Scheme $scheme;

  28. #custom header from upstream server

  29. proxy_set_header DEFINE-REDIRECT $subdomain;

  30. proxy_pass http://x$uri$is_args$args;


  31. }

  32. }