前言
Trojan工作在443端口,难倒了很多想自建博客又想使用Trojan服务的小伙伴们。今天我们一起来搭建一个Trojan外加WordPress博客。443按需分配。所有访问全部开启HTTPS。
如下图实现原理所示:stream通过识别域名的请求,分配相应的动作。若是识别到访问bozai.us,即打开本地的10240端口,通过Trojan客户端过来的合法请求丢给Trojan服务器监听的10242端口,其他不合法的全部丢给10240,也就是我们的web服务。v2ray同理。
因为作者就搭建了一个Trojan,还有很多小伙伴目前也是很喜欢Trojan。所以,作者本期的演示就去除了vmess类型的转发。相信大多数人不会在同一VPS上面搭建多种类型的节点,因为这个纯属浪费资源,没卵用。挂IP了你都不晓得是哪个服务引起的。
所以,我们的访问全程都是HTTPS的访问。
这个方案也同样适合于 宝塔+Trojan 共用443。
本期博客视频演示地址:点击播放
实现原理
在此感谢 程小白 提供的解决方案::Trojan 共用 443 端口方案
准备工作
我们安装的环境包括:MYSQL、PHP7.4、Nginx、Trojan等,所以对VPS的性能有一定的要求。相信机器性能差的也不会选择如此方案。
1、VPS一台内存1G左右,并重置CentOS7的系统(其他系统请自行搭建环境并部署)
2、域名一个并做好相应的解析(按需解析)
开始搭建
安装WordPress博客
这边感谢 atrandys 提供一键安装 WordPress 的脚本。(包含SSL证书申请、MYSQL安装、PHP7.4部署、NGINX安装设置等)
yum install -y wget && wget https://raw.githubusercontent.com/atrandys/wordpress/master/wp_install.sh && chmod +x wp_install.sh && ./wp_install.sh
设置WordPress站点
设置站点的基本信息,并设置管理员用户及密码。保证站点能够正常的访问。
安装官方的Trojan服务
下面的脚本来自Trojan官方。
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"
systemctl enable trojan #设置Trojan开启自动启动
修改Trojan配置
记录SSL证书路径,找到VPS目录 /etc/nginx/ssl
,里面.key是秘钥,.cer是证书文件。
找到VPS目录 /usr/local/etc/trojan/config.json
修改配置如下:(需要修改证书文件地址,密码)
{ "run_type": "server", "local_addr": "127.0.0.1", "local_port": 44321, "remote_addr": "127.0.0.1", "remote_port": 80, "password": [ "password" ], "log_level": 1, "ssl": { "cert": "/etc/nginx/ssl/fullchain.cer", "key": "/etc/nginx/ssl/bozai.us.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配置
找到VPS文件 /etc/nginx/nginx.conf
修改配置信息如下
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 { bozai.us web; t.bozai.us trojan; # 域名都不匹配情况下的默认值 default web; } # web,配置转发详情 upstream web { server 127.0.0.1:10110; } # trojan,配置转发详情 upstream trojan { server 127.0.0.1:44321; } # 监听 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; }
找到VPS文件 /etc/nginx/conf.d/default.conf
,修改为如下配置
server { listen 80; server_name bozai.us; if ($host ~* "bozai.us$") { rewrite ^/(.*)$ https://bozai.us/ permanent; } } server { listen 10110 ssl http2; server_name bozai.us; root /usr/share/nginx/html; index index.php index.html; ssl_certificate /etc/nginx/ssl/fullchain.cer; ssl_certificate_key /etc/nginx/ssl/bozai.us.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服务和我们的Trojan服务。
systemctl restart nginx systemctl restart trojan
后记
本教程只提供一种思路,其实对于NGINX的一些配置,大家可以更严谨一点。
本思路同样适用于 Trojan+宝塔面板+网站搭建 的方式。大家可以自行研究,实在不行,作者也是可以出一个教程。