Categories: trojan

trojan+wordpress完美结合,共同复用443,https保驾护航

技术背景及准备条件:

前段时间利用nginx分流技术分享了trojan和v2ray共同复用443端口史上最详细的搭建博文,今天受朋友委托,故分享trojan和wordpress的组合搭建,使得一台vps开启科学上网代理服务,同时又可以玩网站博客等。当然搭建其他网站可以以此类推,举一反三,毕竟万变不离其中。
搭建准备的东西:域名一个(有ssl证书),vps一台(centos7操作系统)。

技术原理:

有关于技术原理之前的博文已有说,所以这里不再赘述。需要充电的朋友可以点击此处

通过上图获知,利用二级域名的识别,nginx完成相对应的服务请求转发,比如trojan客户端连接的地址为:trojan.yugogogo.tk:443,服务器的nginx收到请求,并识别为trojan流量,将请求转发给trojan服务程序,trojan接收请求并提供科学上网服务。后面的网站服务以此类推。

搭建流程:

一键安装wordpress,SSL证书

根据以下命令逐行执行,目的方便学习,理解过程的作用。以下命令不仅完成wordpress安装,还安装web所依赖的nginx,php,mysql,包括自动申请并配置SSL证书。

yum install -y wget #安装下载依赖命令,已安装过可跳过
#下载安装脚本
wget https://raw.githubusercontent.com/atrandys/wordpress/master/wp_install.sh
#释放执行权限
chmod +x wp_install.sh 
#安装
./wp_install.sh

登录浏览器在线安装wordpress

在浏览器地址栏处输入”自己的域名,如我的yugogogo.tk“,回车登录安装页面。

自行填入站点标题,用户名和密码。(注意:用户名和密码是登录后台验证账户所用,密码尽量设置复杂以免被黑客。)
然后点击页面中的”安装wordpress”,安装成功后即可登录前台和后台。

官方trojan安装及配置

1,下载安装trojan程序,以下是安装命令

 
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"
#设置trojan开机启动
systemctl enable trojan   

2,修改trojan配置文件,命令:vi /usr/local/etc/trojan/config.json,将以下配置信息覆盖原配置文件。修改为自己的SSL证书路径及个人使用密码,包括端口号。上面脚本自动申请获取的SSL证书文件存放在VPS的/etc/nginx/ssl

 
{
    "run_type": "server",
    "local_addr": "127.0.0.1",
    "local_port": 20202,
    "remote_addr": "127.0.0.1",
    "remote_port": 80,
    "password": [
        "yugogogo"
    ],
    "log_level": 1,
    "ssl": {
        "cert": "/etc/nginx/ssl/fullchain.cer",
        "key": "/etc/nginx/ssl/yugogogo.tk.key",
        "key_password": "",
        "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",
        "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
        "prefer_server_cipher": true,
        "alpn": [
            "http/1.1"
        ],
        "alpn_port_override": {
            "h2": 81
        },
        "reuse_session": true,
        "session_ticket": false,
        "session_timeout": 600,
        "plain_http_response": "",
        "curves": "",
        "dhparam": ""
    },
    "tcp": {
        "prefer_ipv4": false,
        "no_delay": true,
        "keep_alive": true,
        "reuse_port": false,
        "fast_open": false,
        "fast_open_qlen": 20
    },
    "mysql": {
        "enabled": false,
        "server_addr": "127.0.0.1",
        "server_port": 3306,
        "database": "trojan",
        "username": "trojan",
        "password": "",
        "key": "",
        "cert": "",
        "ca": ""
    }
}

修改nginx分流设置

修改命令:vi /etc/nginx/nginx.conf,用以下配置信息覆盖原文件配置。(注意:修改自己的域名及ssl证书路径)以下高亮行注意修改端口号与trojan和网站端口一致。网站使用的端口号是20200,trojan使用的端口号是20201。

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
 
stream { 
# 这里就是 SNI 识别,将域名映射成一个配置名,请修改自己的一级域名 
  map $ssl_preread_server_name $backend_name { 
    yugogogo.tk web; 
    trojan.yugogogo.tk trojan; 
# 域名都不匹配情况下的默认值 
    default web; 
  } 
# web,配置转发详情 
  upstream web { 
    server 127.0.0.1:20200; 
  } 
# trojan,配置转发详情 
  upstream trojan { 
    server 127.0.0.1:20201;
  } 
# 监听 443 并开启 ssl_preread
  server { 
    listen 443 reuseport; 
    listen [::]:443 reuseport; 
    proxy_pass $backend_name; 
    ssl_preread on; 
  }
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  120;
    client_max_body_size 20m;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

紧接着修改nginx虚拟机配置,修改命令:vi /etc/nginx/conf.d/default.conf,同样用以下配置信息覆盖原文件配置。(注意:修改自己的域名及ssl证书路径)

server {
    listen 80;
    server_name yugogogo.tk;
    if ($host ~* "yugogogo.tk$") {
    rewrite ^/(.*)$ https://yugogogo.tk/ permanent;
    }
}
 
server {
    listen 20200 ssl http2;
    server_name yugogogo.tk;
    root /usr/share/nginx/html;
    index index.php index.html;
    ssl_certificate /etc/nginx/ssl/fullchain.cer; 
    ssl_certificate_key /etc/nginx/ssl/yugogogo.tk.key;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security "max-age=31536000";
    access_log /var/log/nginx/hostscube.log combined;
    location ~ \.php$ {
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
    }
    location / {
       try_files $uri $uri/ /index.php?$args;
    }
}

修改完nginx配置文件后,请使用以下命令验证nginx配置是否正确。

nginx -t #验证nginx配置文件正确性

验证正确,再重新启动trojan和nginx

systemctl restart trojan
systemctl restart nginx

trojan连接测试

连接使用前期博文有说,这里不再赘述,需要充电的请点击此处

直通车

如你对以上搭建技术视频感兴趣,直接到我频道中观看。

Little yu

View Comments