18846

Centos7安装配置Trojan-go + Nginx

前言

为了利用现有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/

本文参考链接:https://jeanniestudio.top/2020/07/17/%E6%89%8B%E5%8A%A8%E6%90%AD%E5%BB%BATrojan-go+Nginx+Tls%20-%20%E5%89%AF%E6%9C%AC/

文章作者:DOTATONG
发布日期:2021-11-14

评论

4 条

ddd

"remote_port": 1239, 是什么意思? "remote_port": 80, 就够了,nginx 的80端口可以不上tls,tls由trojan-go来完成,trojan-go反代80即可

回复 ·

DOTATONG 作者

1、此处1239端口是为了配置ssl证书,用来替换默认443端口的,避免nginx有其他server占用了443的情况。此时,外网访问该网站时需使用 https://your_domain.com:1239
2、如果不在nginx配置证书,那就用默认的80端口就可以了

回复 ·

萝卜精

感谢大佬分享,有个问题,像这个教程中的SSL证书,如果到期后怎么续期呢,或者说怎么续费以及查看到期时间,还是说到期后只能申请其他服务商的证书呢

回复 ·

DOTATONG 作者

假设是用root账户安装的acme.sh,那么可以使用该命令对域名证书进行续期
systemctl stop nginx
"/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh"
systemctl start nginx

回复 ·

添加新评论