杜郎俊赏 - dujun.io

开源实例之解决域名被墙

前言

本篇介绍开源实例系列域名被墙的解决方案。

问题描述

移动网络屏蔽了 eu.org 域名。表现为使用电信网络的电脑端访问开源实例正常,而使用移动网络的手机端无法访问。

解决方案

启用 dujun.tk 域名替换 dujun.eu.org 域名。tk 域名不稳定,在字面上仍用 eu.org 作为入口跳转。

具体部署

申请 dujun.tk 域名

tk 域名可在https://www.freenom.com申请,为期一年,到期可续。

注意:tk 域名没有所有权,随时可能被收回,不建议在正式业务中使用。

生成通配符 SSL 证书

域名解析在 DNSPod,使用 acme.sh 生成通配符 SSL 证书:

acme.sh --issue --dns dns_dp -d dujun.tk -d *.dujun.tk

详见《开源实例之免费通配符SSL证书》。

解析 dujun.tk 子域名

server {
    listen 80;
    server_name *.dujun.tk dujun.tk;
    rewrite ^(.*)$ https://$host$1 permanent;
}

server {
    listen 443 ssl http2;
    server_name *.dujun.tk dujun.tk;

    add_header "Access-Control-Allow-Origin" "*" always;
    add_header "Access-Control-Allow-Credentials" "true" always;
    add_header "Access-Control-Allow-Methods" "GET,HEAD,POST" always;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header Origin http://$host;
        proxy_redirect default;
    }

    ssl_certificate /root/.acme.sh/dujun.tk_ecc/dujun.tk.cer;
    ssl_certificate_key /root/.acme.sh/dujun.tk_ecc/dujun.tk.key;
    ssl_trusted_certificate /root/.acme.sh/dujun.tk_ecc/ca.cer;
}

解析 dujun.eu.org 子域名(跳转)

server {
    listen 80;
    listen 443 ssl http2;

    server_name dujun.eu.org;
    rewrite ^(.*) https://dujun.tk$1 permanent;

    ssl_certificate /root/.acme.sh/dujun.eu.org_ecc/dujun.eu.org.cer;
    ssl_certificate_key /root/.acme.sh/dujun.eu.org_ecc/dujun.eu.org.key;
    ssl_trusted_certificate /root/.acme.sh/dujun.eu.org_ecc/ca.cer;
}

server {
    listen 80;
    listen 443 ssl http2;

    server_name *.dujun.eu.org;
    if ( $http_host ~* "^(.*?)\.dujun\.eu\.org$") {
        set $domain $1;
    }
    rewrite ^/(.*) http://$domain.dujun.tk/$1 permanent;

    ssl_certificate /root/.acme.sh/dujun.eu.org_ecc/dujun.eu.org.cer;
    ssl_certificate_key /root/.acme.sh/dujun.eu.org_ecc/dujun.eu.org.key;
    ssl_trusted_certificate /root/.acme.sh/dujun.eu.org_ecc/ca.cer;
}

dujun.eu.org 子域名转发至 dujun.tk 相同子域名。例如 wordpress.dujun.eu.org 将跳转至 wordpress.dujun.tk。

手机端域名替换

js 渲染页面时,将要打开的站外链接地址中 dujun.eu.org 替换为 dujun.tk。

后记

体验更多开源实例

标签: 开源实例
日期:2023-03-02