前言
为了利用现有Nginx服务,本文采用手动搭建安装Trojan-go
申请tls证书
安装acme.sh脚本
(请在root用户下安装)
1、【可选】安装依赖
yum -y install socat
2、安装acme.sh脚本
curl https://get.acme.sh | sh
出现:Install success!表示安装成功
3、让环境变量生效
source ~/.bashrc
用acme.sh脚本申请证书
申请证书时会占用80端口,申请时可先临时停止nginx等占用80端口的服务。
1、使用邮箱注册账号
acme.sh --register-account -m xxx@qq.com
2、签发证书,your_domain.com替换成你的域名
acme.sh --issue -d your_domain.com --standalone -k ec-256 --force
出现:Cert success. 以及 证书路径表示成功
3、创建证书存储目录
mkdir /root/your_domain.com
4、复制/安装证书,your_domain.com替换成你的域名
acme.sh --installcert -d your_domain.com --fullchainpath /root/your_domain.com/fullchain.crt --keypath /root/your_domain.com/privkey.key --ecc --force
安装配置Nginx
创建网站
mkdir /home/www/your_domain.com
vi /home/www/your_domain.com/index.html
#index.html文件放任意内容,例如
hello world!
安装Nginx
参考之前文章:https://dotatong.cn/index.php/archives/1/
网站配置文件
注意:
1、your_domain.com替换为你的域名(共3处)
2、1239为网站对外端口号,可自行设定
vi /etc/nginx/conf.d/trojan.conf
server{
listen 1239;
server_name your_domain.com;
root /home/www/trojan;
index index.html;
ssl on;
ssl_certificate /root/your_domain.com/fullchain.crt;
ssl_certificate_key /root/your_domain.com/privkey.key;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
}
server{
listen 1234;
return 404;
}
安装配置trojan-go
安装trojan-go
在 https://github.com/p4gefau1t/trojan-go/releases 查看下载链接,下载解压至 /usr/local/trojan-go
目录
wget https://github.com/p4gefau1t/trojan-go/releases/download/v0.10.6/trojan-go-linux-amd64.zip
配置trojan-go
将example目录下的 server.json 复制到/usr/local/trojan-go
目录,修改为如下内容
1、local_port为trojan-go对外端口(即客户端连接端口)
2、remote_port必须与上面配置的网站端口保持一致
3、password自行修改(客户端连接需要用到)
4、your_domain.com替换为你的域名(共2处)
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 1240,
"remote_addr": "127.0.0.1",
"remote_port": 1239,
"password": [
"xxxxxxxxxxx"
],
"ssl": {
"cert": "/root/your_domain.com/fullchain.crt",
"key": "/root/your_domain.com/privkey.key",
"sni": "s.phpdota.com",
"fallback_port": 1234
},
"router": {
"enabled": true,
"block": [
"geoip:private"
],
"geoip": "/usr/local/trojan-go/geoip.dat",
"geosite": "/usr/local/trojan-go/geosite.dat"
}
}
创建sytemctl启动文件
1、复制启动文件至系统服务目录
cp /usr/local/trojan-go/example/trojan-go.service /usr/lib/systemd/system/
2、修改启动文件,将其中启动路径调整为如下:
ExecStart=/usr/local/trojan-go/trojan-go -config /usr/local/trojan-go/server.json
3、启动服务&设置开机启动
systemctl daemon-reload
systemctl start trojan-go
systemctl enable trojan-go
trojan-go客户端
Windows/MacOS/Linux客户端Trojan-Qt5
https://github.com/Trojan-Qt5/Trojan-Qt5/releases
安卓客户端Igniter-Go
iOS客户端shadowrocket
最新全部客户端下载地址
https://dl.trojan-cdn.com/trojan/
文章作者:DOTATONG
发布日期:2021-11-14
"remote_port": 1239, 是什么意思? "remote_port": 80, 就够了,nginx 的80端口可以不上tls,tls由trojan-go来完成,trojan-go反代80即可
1、此处1239端口是为了配置ssl证书,用来替换默认443端口的,避免nginx有其他server占用了443的情况。此时,外网访问该网站时需使用 https://your_domain.com:1239
2、如果不在nginx配置证书,那就用默认的80端口就可以了
感谢大佬分享,有个问题,像这个教程中的SSL证书,如果到期后怎么续期呢,或者说怎么续费以及查看到期时间,还是说到期后只能申请其他服务商的证书呢
假设是用root账户安装的acme.sh,那么可以使用该命令对域名证书进行续期
systemctl stop nginx
"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh"
systemctl start nginx