前段时间利用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 看看,也许正是您需要的。