首先先安装AdGuard Home服务器。
为什么先安装这个了,因为之后53端口会影响安装。安装完如打不开因为端口默认是给了ipv6,禁用ipv6参考:https://www.cnblogs.com/kaishirenshi/p/13496475.html
安装完AdGuard Home进不去页面说明:
#开放端口 firewall-cmd --zone=public --add-port=3000/tcp --permanent #添加端口外部访问权限 firewall-cmd --add-port=3000/tcp #重启防火墙 firewall-cmd --reload # 上面完成基本就可以,要是还进不去,执行 # 查询命令 netstat -tunlp # 显示类似下面这样tcp6后面是3000端口,说明给了ipv6了 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3075/sshd tcp6 0 0 :::3000 :::* LISTEN 3837/AdGuardHome 首先,关闭 ipv6 并且重启 httpd: sysctl net.ipv6.conf.all.disable_ipv6=1 systemctl restart httpd
补充关闭防火墙命令
# 关闭端口 firewall-cmd --zone=public --remove-port=3000/tcp --permanent # 重启防火墙 firewall-cmd --reload
安装完AdGuard Home,在执行netstat -tunlp,看到AdGuard Home开放的端口都在tcp6上,如果要转移到tcp上,修改AdGuardHome.yaml文件,把里面的
bind_host: 0.0.0.0转成bind_host: 127.0.0.1或bind_host: 服务器IP,修改完以后,重启AdGuardHome
# 重启 systemctl restart AdGuardHome.service # 启动 systemctl start AdGuardHome.service
-----------------------------------------------------------------------------
再安装Certbot配置证书,AdGuard Home里面https用8443端口
现在需要443和80端口共存
到/www/server/panel/vhost/nginx下面新建dns.yyun8.com.conf文件,输入以下内容,主要是域名,证书和端口
server {
listen 80;
server_name dns.yyun8.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_redirect http://$host/ http://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
listen 443 ssl http2;
server_name dns.yyun8.com;
ssl_certificate /etc/letsencrypt/live/dns.yyun8.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yyun8.com/privkey.pem;
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
location / {
proxy_pass https://127.0.0.1:8443;
proxy_redirect https://$host/ https://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_set_header Host $host;
}
}注意上面的域名和证书位置,端口号,然后重启nginx就可以了,
之后可以http://dns.yyun8.com和https://dns.yyun8.com访问AdGuard Home了
DOH加密https://dns.yyun8.com:8443/dns-query也可以用443默认访问了如https://dns.yyun8.com/dns-query
参考:https://www.cnblogs.com/sanduzxcvbnm/p/14544367.html
另一个参考没有测试:https://apad.pro/?p=1107
上游服务器用文件引用,比如我放在了so.miyun1.com网站下面,修改AdGuardHome.yaml文件里面upstream_dns_file引用文件,用绝对路径
upstream_dns_file: /wwwroot/web/so.miyun1.com/88scripts/AGH-overseas.txt
上面文件里面定义了国外域名走哪个dns,还需要在里面添加上默认的dns,修改完以后重启AdGuard Home
# 重启 systemctl restart AdGuardHome.service
补充:让http站点重定向到别的首页
新建一个空站点,比如d.yyun8.com,然后到/www/server/panel/vhost/nginx下面修改dns.yyun8.com.conf文件
在server_name dns.yyun8.com;下面添加
index index.php index.html index.htm default.php default.htm default.html; root /wwwroot/web/d.yyun8.com;
proxy_pass http://127.0.0.1:3001;
proxy_redirect http://$host/ http://$http_host/;
上面两行保留或前面添加#注释掉都可以,然后在这两行下面添加下面代码,保留其中一个就可以了
proxy_redirect ~^http://127.0.0.1:3001(.*) http://d.yyun8.com$1; proxy_redirect http://127.0.0.1:3001/ http://d.yyun8.com/;
下面是完整的修改后的代码,上面参看,主要看下面
server {
listen 80;
server_name dns.yyun8.com;
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_redirect http://$host/ http://$http_host/;
proxy_redirect ~^http://127.0.0.1:3001(.*) http://d.yyun8.com$1;
#proxy_redirect http://127.0.0.1:3001/ http://d.yyun8.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
listen 443 ssl http2;
server_name dns.yyun8.com;
ssl_certificate /etc/letsencrypt/live/dns.yyun8.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yyun8.com/privkey.pem;
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
location / {
proxy_pass https://127.0.0.1:8443;
proxy_redirect https://$host/ https://$http_host/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_set_header Host $host;
}
}上面修改完访问http://dns.yyun8.com会重定向到http://d.yyun8.com的内容,网址dns.yyun8.com,还是然后去修改http://d.yyun8.com里面的主页内容即可
补充:让https站点重定向到别的首页
在下面文件下面添加指定内容,参考:https://segmentfault.com/q/1010000017065655
listen 443 ssl http2;
server_name dns.yyun8.com;
index index.php index.html index.htm default.php default.htm default.html; root /wwwroot/web/d.yyun8.com;
注释掉之前的https端口重定向,然后下面添加
# 下面是重写https首页到http://d.yyun8.com
location / {
proxy_pass http://d.yyun8.com/;
}
# 下面是重写首页8443/dns-query的8443端口到443端口
location /dns-query {
proxy_pass https://127.0.0.1:8443/dns-query;
}完整代码
server {
listen 80;
server_name dns.yyun8.com;
# 下面两行是指定http哪个目录
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
location / {
#proxy_pass http://127.0.0.1:3001;
#proxy_redirect http://$host/ http://$http_host/;
proxy_redirect ~^http://127.0.0.1:3001(.*) http://d.yyun8.com$1;
#proxy_redirect http://127.0.0.1:3001/ http://d.yyun8.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
listen 443 ssl http2;
server_name dns.yyun8.com;
# 下面两行是指定https哪个目录
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
ssl_certificate /etc/letsencrypt/live/dns.yyun8.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yyun8.com/privkey.pem;
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
location / {
#proxy_pass https://127.0.0.1:8443;
#proxy_redirect https://$host/ https://$http_host/;
#proxy_redirect ~^https://127.0.0.1:8443(.*) http://d.yyun8.com$1;
#proxy_redirect ~^https://127.0.0.1:8443/dns-query(.*) https://dns.yyun8.com/dns-query$1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_set_header Host $host;
# 下面是重写https首页到http://d.yyun8.com
location / {
proxy_pass http://d.yyun8.com/;
}
# 下面是重写首页8443/dns-query的8443端口到443端口
location /dns-query {
proxy_pass https://127.0.0.1:8443/dns-query;
}
}
}但是管理面板就不能访问了
另一种方法,https首页不需要,后面加比如panel登陆,这个方法跳转登陆还会跑到https首页去,因为登陆了,只要再次打开后面带/panel就可以进去了
完整代码
server {
listen 80;
server_name dns.yyun8.com;
# 下面两行是指定http哪个目录
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
location / {
#proxy_pass http://127.0.0.1:3001;
#proxy_redirect http://$host/ http://$http_host/;
proxy_redirect ~^http://127.0.0.1:3001(.*) http://d.yyun8.com$1;
#proxy_redirect http://127.0.0.1:3001/ http://d.yyun8.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
listen 443 ssl http2;
server_name dns.yyun8.com;
# 下面两行是指定https哪个目录
# index index.php index.html index.htm default.php default.htm default.html;
# root /wwwroot/web/d.yyun8.com;
ssl_certificate /etc/letsencrypt/live/dns.yyun8.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yyun8.com/privkey.pem;
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
location / {
#proxy_pass https://127.0.0.1:8443;
#proxy_redirect https://$host/ https://$http_host/;
#proxy_redirect ~^https://127.0.0.1:8443(.*) http://d.yyun8.com$1;
#proxy_redirect ~^https://127.0.0.1:8443/dns-query(.*) https://dns.yyun8.com/dns-query$1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_set_header Host $host;
# 下面是重写https首页到http://d.yyun8.com,注释掉,首页为空,用端口访问管理页面
#location / {
#proxy_pass http://d.yyun8.com/;
#}
# 下面是重写首页加密dns的DOH的8443/dns-query的8443端口到443端口
location /dns-query {
proxy_pass https://127.0.0.1:8443/dns-query;
}
location /panel {
proxy_pass https://127.0.0.1:8443/;
}
# 下面是指定登陆页面
location /login.html {
proxy_pass http://127.0.0.1:3001/login.html;
}
# 下面是指定登陆页面需要的其它文件
location /assets/ {
proxy_pass http://127.0.0.1:3001/assets/;
}
# 下面是指定登陆页面需要的其它文件
location /login {
proxy_pass http://127.0.0.1:3001/login;
}
location /main {
proxy_pass http://127.0.0.1:3001/main;
}
# 下面这个主要是登陆要用
location /control {
proxy_pass http://127.0.0.1:3001/control;
}
# 下面这个主要是登陆后跳转
location /#settings {
proxy_pass http://127.0.0.1:3001/#settings;
}
}
}补充:让http和https站点重定向到相同的首页
1,注意修改dns.yyun8.com.conf文件,不是d.yyun8.com.conf文件,去掉https里面的下面两行前面的注释
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
2,去掉proxy_redirect ~^https://127.0.0.1:8443(.*) http://d.yyun8.com$1;前面的注释
3,还要注意:root /wwwroot/web/d.yyun8.com;类似这个的网站路径要区分大小写
然后用panel子文件夹来重定向访问控制面板。完整代码如下
server {
listen 80;
server_name dns.yyun8.com;
# 下面两行是指定http哪个目录
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
location / {
#proxy_pass http://127.0.0.1:3001;
#proxy_redirect http://$host/ http://$http_host/;
proxy_redirect ~^http://127.0.0.1:3001(.*) http://d.yyun8.com$1;
#proxy_redirect http://127.0.0.1:3001/ http://d.yyun8.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
listen 443 ssl http2;
server_name dns.yyun8.com;
# 下面两行是指定https哪个目录
index index.php index.html index.htm default.php default.htm default.html;
root /wwwroot/web/d.yyun8.com;
ssl_certificate /etc/letsencrypt/live/dns.yyun8.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dns.yyun8.com/privkey.pem;
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
location / {
#proxy_pass https://127.0.0.1:8443;
#proxy_redirect https://$host/ https://$http_host/;
proxy_redirect ~^https://127.0.0.1:8443(.*) http://d.yyun8.com$1;
#proxy_redirect ~^https://127.0.0.1:8443/dns-query(.*) https://dns.yyun8.com/dns-query$1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_server_name on;
proxy_set_header Host $host;
# 下面是重写https首页到http://d.yyun8.com,注释掉,首页为空,用端口访问管理页面
#location / {
#proxy_pass http://d.yyun8.com/;
#}
# 下面是重写首页加密dns的DOH的8443/dns-query的8443端口到443端口
location /dns-query {
proxy_pass https://127.0.0.1:8443/dns-query;
}
location /panel {
proxy_pass https://127.0.0.1:8443/;
}
# 下面是指定登陆页面
location /login.html {
proxy_pass http://127.0.0.1:3001/login.html;
}
# 下面是指定登陆页面需要的其它文件
location /assets/ {
proxy_pass http://127.0.0.1:3001/assets/;
}
# 下面是指定登陆页面需要的其它文件
location /login {
proxy_pass http://127.0.0.1:3001/login;
}
location /main {
proxy_pass http://127.0.0.1:3001/main;
}
# 下面这个主要是登陆要用
location /control {
proxy_pass http://127.0.0.1:3001/control;
}
# 下面这个主要是登陆后跳转
location /#settings {
proxy_pass http://127.0.0.1:3001/#settings;
}
}
}注意事项:网站路径大小写
最后重启Nginx
重启网络:systemctl restart network