需求:现需要在ipv6环境下对测试环境项目进行测试,这里通过使用nginx将ipv6的域名解析转到实际存在的ipv4测试项目域名。搭建nginx可以参照搭建nginx。
主机请求ipv6域名ipv6.test.com,请求报文到达nginx后,通过nginx将域名指向ipv4.test.com。nginx通过本地DNS解析出对应内网主机,最后到达目的主机。DNS也是nginx搭建的。
nginx配置文件(/etc/nginx/conf.d/test6.conf)
server {
server_name test6.test.com;
listen [::]:80;
location / {
return 301 https://test4.test.com$request_uri;
}
}
server {
server_name test6.test.com;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl/test.crt;
ssl_certificate_key /etc/nginx/ssl/test.key;
location / {
proxy_pass https://test4.test.com;
}
}
DNS配置文件
upstream test4_node {
server 192.168.2.110:8080 ;
}
server{
listen 80;
server_name ipv4.test.com;
location / {
proxy_pass http://test4_node;
proxy_set_header Host $host;
#使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
proxy_set_header X-Real-IP $remote_addr;
#使用$remote_addr可以在web服务器端获得用户的真实ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#增加一个$proxy_add_x_forwarded_for到X-Forwarded-For里去,如果两台nginx都使用了这个配置,那么其值为客户端ip和第一台nginx的ip
}
}