技术背景及准备条件:
前段时间利用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证书。
| 
					 1 2 3 4 5 6 7  | 
						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程序,以下是安装命令
| 
					 1 2 3  | 
						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
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50  | 
						{     "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。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47  | 
						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证书路径)
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28  | 
						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配置是否正确。
| 
					 1  | 
						nginx -t #验证nginx配置文件正确性  | 
					
验证正确,再重新启动trojan和nginx
| 
					 1 2  | 
						systemctl restart trojan systemctl restart nginx  | 
					
trojan连接测试
连接使用前期博文有说,这里不再赘述,需要充电的请点击此处。
直通车
如你对以上搭建技术视频感兴趣,直接到我频道中观看。
Littleyu科学上网技术
感谢分享,如果厌倦搭建的繁琐步骤,不妨来 devpn.store 看看,也许正是您需要的。