dnsmasq+nginx实现地址转发

Posted cooper-73

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dnsmasq+nginx实现地址转发相关的知识,希望对你有一定的参考价值。

一、部署环境:

  主机:192.168.1.155   

  部署方式:rancher2.0 手动发布

  部署包:dnsmasq   nginx   (docker镜像)

二、部署配置:

  在这里我们使用的是rancher2.0部署镜像,具体操作很简单,在这里就不再赘述了。

  dnsmasq和nginx部署完成后如下:

技术图片

  1、dnsmasq

  我们可以进入容器去配置dnsmas.conf文件,也可以使用管理页面进行配置。在这里使用UI页面配置:

技术图片

  配置详情:

 1 #dnsmasq config, for a complete example, see:
 2 #  http://oss.segetech.com/intra/srv/dnsmasq.conf
 3 #单设置127只为本机使用,加入本机IP为内部全网使用,默认监听主机所有网卡
 4 #如果是docker容器部署的,配置监听需要配置容器的虚拟ip
 5 #listen-address=127.0.0.1,10.42.0.23
 6 #log all dns queries;dnsmasq日志设置
 7 log-queries
 8 log-facility=/var/log/dnsmasq.log
 9 #dont use hosts nameservers
10 #no-resolv
11 resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf     //在这里我们自定义了nameserver
12 #不读取系统hosts,读取你设定的
13 no-hosts
14 addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts        //自定义了hosts
15 #重启后清空缓存
16 clear-on-reload
17 # 完整的域名才向上游服务器查找,如果仅仅是主机名仅查找hosts文件
18 #domain-needed
19 #dnsmasq缓存设置
20 cache-size=2048
21 # 严格按照resolv.conf中的顺序进行查找
22 #strict-order
23 # 也不要检测 /etc/resolv.conf 的变化
24 no-poll
25 #定义主机ip映射
26 address=/irms.boco.com/192.168.1.161
27 address=/wesf-shanxi.irms.boco.com/192.168.1.155

    由于我们在上面自定义了resolv和hosts,因此需要到定义的目录下创建对应的文件配置:

    vi  /etc/dnsmasq.d/resolv.dnsmasq.conf
1  nameserver 192.168.1.155    //或者容器的虚拟ip 
    vi /etc/dnsmasq.d/dnsmasq.hosts
1 192.168.1.161    irms.boco.com
2 192.168.1.155    websf-shanxi.irms.boco.com

    配置完成后restart。

  2、nginx

    vi /etc/nginx/nginx.conf

  1 # For more information on configuration, see:
  2 #   * Official English Documentation: http://nginx.org/en/docs/
  3 #   * Official Russian Documentation: http://nginx.org/ru/docs/
  4 
  5 user nginx;
  6 worker_processes auto;
  7 error_log /var/log/nginx/error.log;
  8 pid /var/run/nginx.pid;
  9 
 10 # Load dynamic modules. See /usr/share/nginx/README.dynamic.
 11 include /usr/share/nginx/modules/*.conf;
 12 
 13 events {
 14     worker_connections 1024;
 15 }
 16 
 17 http {
 18     log_format  main  $remote_addr - $remote_user [$time_local] "$request" 
 19                       $status $body_bytes_sent "$http_referer" 
 20                       "$http_user_agent" "$http_x_forwarded_for";
 21 
 22     access_log  /var/log/nginx/access.log  main;
 23 
 24     sendfile            on;
 25     tcp_nopush          on;
 26     tcp_nodelay         on;
 27     keepalive_timeout   65;
 28     types_hash_max_size 2048;
 29 
 30     include             /etc/nginx/mime.types;
 31     default_type        application/octet-stream;
 32 
 33     # Load modular configuration files from the /etc/nginx/conf.d directory.
 34     # See http://nginx.org/en/docs/ngx_core_module.html#include
 35     # for more information.
 36     include /etc/nginx/conf.d/*.conf;
 37 
 38 
 39 
 40     #shanxi
 41     server {
 42         listen       8088 default_server;
 43         listen       [::]:8088 default_server;
 44         server_name  _;
 45         root         /usr/share/nginx/html;
 46 
 47         # Load configuration files for the default server block.
 48         include /etc/nginx/default.d/*.conf;
 49         location /webdm {
 50             proxy_set_header Host $host:8088;
 51             proxy_pass http://irms.boco.com/webdm;
 52         }
 53         location /cad {
 54             proxy_pass http://cad.irms.boco.com/;
 55         }
 56         location /webisa {
 57             proxy_pass http://irms.boco.com/webisa;
 58         }
 59         location /webaddress {
 60             proxy_pass http://webaddress-shanxi.irms.boco.com/webaddress;
 61         }
 62         location /webddm {
 63             proxy_pass http://webddm-shanxi.irms.boco.com/webddm;
 64         }
 65         location /webpon {
 66             proxy_pass http://webpon-shanxi.irms.boco.com/webpon;
 67         }
 68         location /webrofhflow {
 69             proxy_pass http://webrofhflow-shanxi.irms.boco.com/webrofhflow;
 70         }
 71         location /weblifecyc {
 72             proxy_pass http://weblifecyc-shanxi.irms.boco.com/weblifecyc;
 73         }
 74         location /webrms {
 75             proxy_pass http://webrms-shanxi.irms.boco.com/webrms;
 76         }
 77         location /websf {
 78             proxy_set_header Host $host:8088;    
 79             proxy_pass http://websf-shanxi.irms.boco.com/websf;
 80         }
 81         location /dps {
 82             proxy_pass http://irms.boco.com/dps;
 83         }
 84         location /webdps {
 85             proxy_pass http://irms.boco.com/webdps;
 86         }
 87 
 88         location / {
 89             proxy_pass http://irms.boco.com/;
 90         }
 91 
 92         error_page 404 /404.html;
 93             location = /40x.html {
 94         }
 95 
 96         error_page 500 502 503 504 /50x.html;
 97             location = /50x.html {
 98         }
 99     }
100 }

    配置nginx所在主机的resolv.conf文件(或者是nginx所在容器内)为dnsmasq主机(或容器)的ip。

三、验证结果

 技术图片

  域名解析正常,验证成功。

  

以上是关于dnsmasq+nginx实现地址转发的主要内容,如果未能解决你的问题,请参考以下文章

nginx 代理转发 传递真实 ip 地址

Nginx和tomcat实现负载均衡

Nginx中的Rewrite的重定向配置与实践

Nginx和tomcat实现负载均衡

使用nginx正向代理实现内网域名转发

nginx 二级域名转发