11月 2021

Xray(VLESS+XTLS或trojan+tls)+BTpanel+wordpress使用nginx共存搭建过程的探索

1.服务器背景

这台机子已经运行了很久的wordpress,https是最近才加上的。等于有一台服务器预装了BT+wordpress,,所以只需要再安装xray即可。这篇文章的起因是以前搭建博客时没有想怎么和其他服务共用443端口,在使用一键脚本搭建xray时,发现二者直接搭建是不能实现共存的。

2.开始搭建

首先介绍一下完整过程、出现的问题和解决方法。

这里参考了波仔的做法:https://www.v2rayssr.com/xraybt.html

视频在这里

2.1 安装宝塔和相关环境

搭建宝塔的步骤这里就不展开了,具体看波仔的帖子,值得注意的有几点:

  • 不一定需要安装aapanel(宝塔国际版),普通版的宝塔也是可以做到的
  • 在cloudflare解析时不要开启小云朵,亲测搭建完开启cf加速是没有办法连接的,申请证书的时候也有影响
  • 也不一定需要1G的内存,512M内存加swap也是可以做到的
  • BBR不一定要开,自己选择(链接:https://www.v2rayssr.com/bbr.html
  • 在安装完宝塔安装LNMP时建议五个组件全装而不是像视频中波仔一样安装部分组件,建议安装插件上的系统防火墙,管理防火墙很方便

2.2 安装Xray并调试

首先我们安装Xray的官方版本

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u root

然后生成一个随机编码备用

cat /proc/sys/kernel/random/uuid # 粘贴到VPS运行即可生成 UUID

安装完成后,在VPS目录 /usr/local/etc/xray 找到 config,json 文件,粘贴下面的配置文件

(下面的三处域名是必须修改的)

首先这里是xray的vless+xtls模式:

{
    "log": {
        "loglevel": "warning"
    }, 
    "inbounds": [
        {
            "listen": "0.0.0.0", 
            "port": 443, 
            "protocol": "vless", 
            "settings": {
                "clients": [
                    {
                        "id": "5272bc0d-9852-4af7-b2f0-979b1faf2973",
                                                   //此处改为你的UUID
                        "level": 0, 
                        "email": "[email protected]",  
                                             //此处为邮箱地址,随便填
                        "flow":"xtls-rprx-direct"
                    }
                ], 
                "decryption": "none", 
                "fallbacks": [
                    {
                        "alpn": "h2", 
                        "dest": 8002   //此处为回落端口,若更改,请更改后面Nginx的相应配置
                    }
                ]
            }, 
            "streamSettings": {
                "network": "tcp", 
                "security": "xtls", 
                "xtlsSettings": {
                    "serverName": "qq.bozai.us",  //修改为你的域名
                    "alpn": [
                        "h2", 
                        "http/1.1"
                    ], 
                    "certificates": [
                        {
                            "certificateFile": "/www/server/panel/vhost/cert/qq.bozai.us/fullchain.pem", //修改为你的域名
                            "keyFile": "/www/server/panel/vhost/cert/qq.bozai.us/privkey.pem" //修改为你的域名
                        }
                    ]
                }
            }
        }
    ], 
    "outbounds": [
        {
            "protocol": "freedom", 
            "settings": { }
        }
    ]
}

下面是trojan的修改方法:

 {
    "log": {
        "loglevel": "warning"
    },
    "inbounds": [
 {
            "listen": "0.0.0.0",
            "port": 443,
            "protocol": "trojan",
            "settings": {
                "clients": [
                    {
                        "password":"440221",
                        "email": "[email protected]", //此处为邮箱地址,随便修改
                        "level": 0,
                        "flow": "xtls-rprx-direct"        
                    }
                ],
                "decryption": "none",
                "fallbacks": [
                    {
               
                        "dest": 2222   //此处为回落端口,若更改,请更改后面Nginx的相应配置
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "tls",
                "tlsSettings": {
                    "serverName": "oliverhou.com", //修改为你的域名
                    "alpn": [
                        "h2",
                        "http/1.1"
                    ],
                    "certificates": [
                        {
                            "certificateFile": "/www/server/panel/vhost/cert/oliverhou.com/fullchain.pem", //修改为你的域名 注意证书的位置 破解版宝塔把cert改成ssl
                            "keyFile": "/www/server/panel/vhost/cert/oliverhou.com/privkey.pem" //修改为你的域名 注意证书的位置 破解版宝塔把cert改成ssl
                        }
                    ]
                }
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom",
            "settings": { }
        }
    ]
 }

最后补充一下多协议同端口回落

 {
    "log": {
        "loglevel": "warning"
    },
    "inbounds": [

 {
            "listen": "0.0.0.0",
            "port": 443,
            "protocol": "trojan",
            "settings": {
                "clients": [
                    {
                        "password":"440221",
                        "email": "[email protected]", //此处为邮箱地址,随便修改
                        "level": 0,
                        "flow": "xtls-rprx-direct"        
                    }
                ],
                "decryption": "none",
                "fallbacks": [
                    {
               
                        "dest": 2222   //此处为回落端口,若更改,请更改后面Nginx的相应配置
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "tls",
                "tlsSettings": {
                    "serverName": "oliverhou.com", //修改为你的域名
                    "alpn": [
                        "h2",
                        "http/1.1"
                    ],
                    "certificates": [
                        {
                            "certificateFile": "/www/server/panel/vhost/cert/oliverhou.com/fullchain.pem", //修改为你的域名 注意证书的位置 破解版宝塔把cert改成ssl
                            "keyFile": "/www/server/panel/vhost/cert/oliverhou.com/privkey.pem" //修改为你的域名 注意证书的位置 破解版宝塔把cert改成ssl
                        }
                    ]
                }
            }
        }
,//每个协议块用,号隔开
{
            "listen": "0.0.0.0",
            "port": 443,
            "protocol": "vless",
            "settings": {
                "clients": [
                    {
                        "id": "3e708264-834f-4c23-a40c-cfe9ae958f11", //此处改为你的UUID
                        "level": 0,
                        "email": "[email protected]", //此处为邮箱地址,随便修改
                        "flow":"xtls-rprx-direct"
                    }
                ],
                "decryption": "none",
                "fallbacks": [
                    {
                        "alpn": "h2",
                        "dest": 2222   //此处为回落端口,若更改,请更改后面Nginx的相应配置
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "xtls",
                "xtlsSettings": {
                    "serverName": "oliverhou.com", //修改为你的域名
                    "alpn": [
                        "h2",
                        "http/1.1"
                    ],
                    "certificates": [
                        {
                            "certificateFile": "/www/server/panel/vhost/cert/oliverhou.com/fullchain.pem", //修改为你的域名 注意证书的位置 破解版宝塔把cert改成ssl
                            "keyFile": "/www/server/panel/vhost/cert/oliverhou.com/privkey.pem" //修改为你的域名 注意证书的位置 破解版宝塔把cert改成ssl
                        }
                    ]
                }
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom",
            "settings": { }
        }
    ]
 }

其实还可以添加更多的协议,或者每个协议都可以用不同的端口,然后在网站配置中添加相应修改,这里就不再赘述

这里如果不熟悉的朋友可以直接输入指令vi /usr/local/etc/xray/config,json 使用vim修改(或者用宝塔的文件管理更方便)

完成上述步骤后,需要为我们的网站申请证书(我的已经有了就不演示了,波仔帖子这里没问题,注意,不要开启强制https,因为后面我们修改nginx会把80重定向至443就已经相当于强制https了,开启会导致重定向过多

搞定这一步就来到了网站设置界面(这里注意,波仔的帖子并不适用于所有情况,具体看下面)

在宝塔里打开网站设置界面,找到配置文件这一选项

首先在代码第一行插入如下代码(记得修改两处域名为你自己的域名)

server {
    listen       0.0.0.0:80;
    server_name  qq.bozai.us;#这里要改为自己的域名
    return 301 https://qq.bozai.us$request_uri;
}

然后修改下一个server块内的代码

注释443那一行,然后修改listen 80的那一行为listen 回落端口 http2

注意:这里的回落端口就是上面xray配置文件中对应的Dest端口

然后把原有的443那一行注释掉(搭建wordpress时没有开启https的可能没有这一行,可忽略这个提示)

最后加入一行代码,保持我们的博客访问时的格式

add_header Content-Security-Policy "upgrade-insecure-requests";

到这里就修改完了,具体参考如下图

最后我们测试一下xray

分别输入下面命令,查看 Xray 是否正常运行,若是有问题,就是配置文件出错



systemctl restart nginx
systemctl status nginx

systemctl restart xray
systemctl status xray

如图,就是ok了

接下来就是在v2rayN里配置相关的信息并导出节点连接,具体配置如图(trojan的也是类似)

(注意:clash并不支持vless,所以更推荐大家使用trojan的fallback)

最后这里说几个问题

1.首先是上面提到的,开启CDN无法连接,貌似在vless+xtls或者trojan下cdn加速(点亮小云朵)xray是没有办法工作的(具体情况不详,也可能是我记错了),所以在解析域名时要么直接不用cloudflare用自家的域名解析最好,或者不开启小云朵即可

2.第二,在开启https后访问网页可能会提示重定向过多,或者使用了ssl插件也可能会出现这种情况,这时候就需要修改配置文件了,具体操作看这个帖子

https://www.wppop.com/wordpress-https-you-cannot-visit-this-page.html

3.第二点不生效可能是证书问题,或者是特殊情况,必要时还需要使用phpadmin进数据库修改wp-option表中的字段,这也是我前面说的建议最好五个插件全都装,不是所有人都会mysql -u -p进数据库的

4.还有不明白直接看project X的文档最直截了当

https://xtls.github.io/Xray-docs-next/

5.上面的xray配置文件如果报错,尝试删除所有//后面的中文备注

6.该教学仅供参考,读者需遵守法律,热爱国家,不应将其用于非法活动

有问题可以在下面留言