前段时间利用nginx分流技术分享了trojan和v2ray共同复用443端口史上最详细的搭建博文,今天受朋友委托,故分享trojan和wordpress的组合搭建,使得一台vps开启科学上网代理服务,同时又可以玩网站博客等。当然搭建其他网站可以以此类推,举一反三,毕竟万变不离其中。
搭建准备的东西:域名一个(有ssl证书),vps一台(centos7操作系统)。
有关于技术原理之前的博文已有说,所以这里不再赘述。需要充电的朋友可以点击此处。
通过上图获知,利用二级域名的识别,nginx完成相对应的服务请求转发,比如trojan客户端连接的地址为:trojan.yugogogo.tk:443,服务器的nginx收到请求,并识别为trojan流量,将请求转发给trojan服务程序,trojan接收请求并提供科学上网服务。后面的网站服务以此类推。
根据以下命令逐行执行,目的方便学习,理解过程的作用。以下命令不仅完成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
在浏览器地址栏处输入”自己的域名,如我的yugogogo.tk“,回车登录安装页面。
自行填入站点标题,用户名和密码。(注意:用户名和密码是登录后台验证账户所用,密码尽量设置复杂以免被黑客。)
然后点击页面中的”安装wordpress”,安装成功后即可登录前台和后台。
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": "" } }
修改命令: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
连接使用前期博文有说,这里不再赘述,需要充电的请点击此处。
如你对以上搭建技术视频感兴趣,直接到我频道中观看。
View Comments
感谢分享,如果厌倦搭建的繁琐步骤,不妨来 devpn.store 看看,也许正是您需要的。