Trojan+宝塔面板,完美运行!Nginx分流,复用443端口!建站和Trojan两不冲突。全程HTTPS访问!

文章导读目录

前言

上期视频我们讲到了如何利用Nginx的SNI来分流Trojan的相关流量。间接实现了建站和Trojan完美运行。视频观看地址:点击播放

视频发布以后,很多小伙伴在咨询宝塔面板+Trojan的搭建方式,需要和网站一起稳定的运行。

其实上期视频作者也是抛砖引玉,希望大家衍生出更多的玩法。既然原理在哪儿,我们实现起来就很简单了。

这期的教程原理依然是引用的 “程小白” 的 “Trojan共用443端口方案” 这篇文章。

点击播放

实现原理

在上期的博客内容中,作者也是写的很详细了 Trojan+Nginx+WordPress个人博客,共用443端口!

大家看到下面的这批代码,应该就能理解了。

  1. # 流量转发核心配置
  2. stream {
  3. # 这里就是 SNI 识别,将域名映射成一个配置名
  4. map $ssl_preread_server_name $backend_name {
  5. 建站的域名 web;
  6. 访问V2ray服务的域名 vmess;
  7. 访问Trojan服务的域名 trojan;
  8. # 域名都不匹配情况下的默认值
  9. default web;
  10. }
  11.  
  12. # web,配置转发详情
  13. upstream web {
  14. server 127.0.0.1:10240;
  15. }
  16.  
  17. # trojan,配置转发详情
  18. upstream trojan {
  19. server 127.0.0.1:10241;
  20. }
  21.  
  22. # vmess,配置转发详情
  23. upstream vmess {
  24. server 127.0.0.1:10242;
  25. }
  26.  
  27. # 监听 443 并开启 ssl_preread
  28. server {
  29. listen 443 reuseport;
  30. listen [::]:443 reuseport;
  31. proxy_pass $backend_name;
  32. ssl_preread on;
  33. }
  34. }

准备工作

1、VPS一台内存最好1GB左右,重置任意可安装宝塔面板的系统(建站推荐CentOS7X以上,或者是CentOS8X)

2、一级域名一个做好相应的解析(今天作者解析的域名为:v2cross.net , www.v2cross.net)

(分别解析主域名和www的二级域名到VPS主机。)

实现的效果

我们访问 v2cross.net 及 www.v2cross.net 均能使用 https 的方式,也就是正常访问我们的博客。

使用Trojan客户端连接 www.v2cross.net 可以正常科学上网。

教程开始

1、连接VPS并安装宝塔面板

以下一键安装宝塔面板的代码仅仅局限CentOS系统的用户,其他用户请访问 这里 查看安装命令

  1. yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装完毕以后,请自行记录宝塔面板的登录地址,并登录宝塔面板。

2、安装建站需要的必要插件

登录以后,在弹出的窗口环境中选择自己需要安装的环境。

(若是使用 WordPress 的博客,请依次安装 Nginx1.18、MySQL5.6、PHP7.4,其他非必要环境作者不想安装就略过了)

3、创建网站

因为作者使用 WordPress 博客的 CMS,所以选择宝塔的一键部署。

分别点击 “软件商店” – “一键部署” ,找到 WordPress 并选择一键部署,填写我们刚才解析好的两个域名。

4、设置网站数据库并配置网站

部署完毕以后,输入我们绑定的域名进行数据库配置及网站设置。不明白请查看 视频教程

5、修改默认的 Nginx 配置

找到 “软件商店” – “已安装” – “Nginx1.18”,设置 Nginx 的配置信息

在 http 模块前面增加如下代码,按照自己的需求进行更改:

  1. stream {
  2. # 这里就是 SNI 识别,将域名映射成一个配置名
  3. map $ssl_preread_server_name $backend_name {
  4. v2cross.net web;
  5. www.v2cross.net trojan;
  6. # 域名都不匹配情况下的默认值
  7. default web;
  8. }
  9.  
  10. # web,配置转发详情
  11. upstream web {
  12. server 127.0.0.1:4433;
  13. }
  14.  
  15. # trojan,配置转发详情
  16. upstream trojan {
  17. server 127.0.0.1:10110;
  18. }
  19.  
  20. # 监听 443 并开启 ssl_preread
  21. server {
  22. listen 443 reuseport;
  23. listen [::]:443 reuseport;
  24. proxy_pass $backend_name;
  25. ssl_preread on;
  26. }
  27. }

6、在线申请 SSL 证书

在网站设置里面,勾选两个绑定的域名,并为其申请 SSL 证书和开启强制 Https 的访问。

7、修改网站的Nginx配置文件

在网站设置里面开启 “伪静态” 为 WordPress ,然后转到配置文件设置。

删除在 server 模块下面的 server_name 里面的 二级域名,只保留主域名 不会请看 视频教程

更改 server 模块下面的443端口为 4433。

在原有的 server 模块下面增加如下代码(请自行替换域名)

  1. server
  2. {
  3. listen 10111;
  4. server_name www.v2cross.net;
  5. location / {
  6. if ($http_host !~ "^v2cross.net$") {
  7. rewrite ^(.*) https://v2cross.net$1 permanent;
  8. }
  9.  
  10. if ($server_port !~ 4433){
  11. rewrite ^(.*) https://v2cross.net$1 permanent;
  12. }
  13.  
  14. proxy_redirect off;
  15. proxy_set_header Host $host;
  16. proxy_set_header X-Real-IP $remote_addr;
  17. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  18. }
  19. access_log logs/aaa.com_access.log;
  20. }

更改完毕以后,请回到 Nginx 设置界面,重启 Nginx 服务。

8、安装官方Trojan服务

  1. sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"

设置Trojan开启自动启动

  1. systemctl enable trojan #设置Trojan开启自动启动

9、修改Trojan配置文件

找到VPS以下文件 /usr/local/etc/trojan/config.json 修改为如下代码:(自行更改密码和域名证书路径)

  1. {
  2. "run_type": "server",
  3. "local_addr": "127.0.0.1",
  4. "local_port": 10110,
  5. "remote_addr": "127.0.0.1",
  6. "remote_port": 10111,
  7. "password": [
  8. "321321321"
  9. ],
  10. "log_level": 1,
  11. "ssl": {
  12. "cert": "/www/server/panel/vhost/cert/v2cross.net/fullchain.pem",
  13. "key": "/www/server/panel/vhost/cert/v2cross.net/privkey.pem",
  14. "key_password": "",
  15. "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",
  16. "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
  17. "prefer_server_cipher": true,
  18. "alpn": [
  19. "http/1.1"
  20. ],
  21. "alpn_port_override": {
  22. "h2": 81
  23. },
  24. "reuse_session": true,
  25. "session_ticket": false,
  26. "session_timeout": 600,
  27. "plain_http_response": "",
  28. "curves": "",
  29. "dhparam": ""
  30. },
  31. "tcp": {
  32. "prefer_ipv4": false,
  33. "no_delay": true,
  34. "keep_alive": true,
  35. "reuse_port": false,
  36. "fast_open": false,
  37. "fast_open_qlen": 20
  38. },
  39. "mysql": {
  40. "enabled": false,
  41. "server_addr": "127.0.0.1",
  42. "server_port": 3306,
  43. "database": "trojan",
  44. "username": "trojan",
  45. "password": "",
  46. "key": "",
  47. "cert": "",
  48. "ca": ""
  49. }
  50. }

更改完毕以后,上传并保存,然后重启Trojan服务

  1. systemctl restart trojan

10、搭建和设置完毕

现在,你就可以连接你的Trojan节点了,网站也可以正常的访问了。

后记

本站所有文章禁止转载至大陆地区可访问的网站,相关的法律责任作者无须言明。此申明需请烂熟于心。龙的传人需自律,有损国家利益和民族团结的事情,坚决不做!望各位珍重!