lnmp一键安装包中配置swoole域名端口映射

按照官方文档

    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        if (!-e $request_filename) {
             proxy_pass http://127.0.0.1:9501;
        }
    }

添加无效,主要是一键安装包的vhost配置文件中没有 找到 location / { 

有个折中的办法,就是在 location ~ \.php { 下配置,把 if 判断改成如下或者干脆删除判断语句

if (-e $request_filename) {

这样一来,所有到该域名的请求,不管有没有index.php,都会变成端口映射,但这样总感觉太野蛮了

================================================================

后来在配置文件中发现一句 

include /usr/local/nginx/conf/rewrite/thinkphp.conf;

那就编辑这个文件吧,果然 location / 在这里,暂时先这样修改:

location / {
    # 如果$uri对应的文件存在,在Nginx返回文件,否则把请求交给Swoole处理
    try_files $uri @swoole;

    if (!-e $request_filename) {
      rewrite ^(.*)$ /index.php?s=$1 last;
      break;
    }
}

location @swoole {
    proxy_pass http://127.0.0.1:9501;
    proxy_http_version 1.1;
    proxy_set_header Connection "keep-alive";
    # Swoole通过$req->header['x-real-ip']拿到该参数
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
}

这样最后达到的效果是,url中有index.php的时候正常访问前台页面,无index.php的时候,会跳转到swoole来处理

但是我并不想让用户直接访问域名就能定位到我的swoole请求页面,反复尝试了好久都达不到效果

================================================================

突然灵光一现,完全可以自己另外定义一个location啊

请求的名字还可以自定义,本例中精确匹配 http

于是所有代码都不用动,只需要在配置文件中添加下边代码即可

  location = /http {
      allow ip白名单1;
      allow ip白名单2;
      deny    all;
      proxy_http_version 1.1;
      proxy_set_header Connection "keep-alive";
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host $host;
      if (!-e $request_filename) {
           proxy_pass http://127.0.0.1:9501;
      }
  }

这样连白名单都有了,可以设置只允许 服务器的反向代理IP 访问swoole_http_server

TODO:如何防止有人绕过前端页面直接请求服务器

================================================================

另外还有一种情况,就是域名后随便输入一段字符,会跳出tp的错误界面

想让它跳转404或者直接返回首页

参考 https://blog.csdn.net/u011486871/article/details/79663127 先实现返回首页

将rewrite规则文件注释,在域名主配置文件中添加:

  location / {
      try_files $uri $uri/ /index.php;
  }

这样无论输入什么字符都会跳转首页,而index.php入口文件也不会受影响

该方法有问题,会让rewrite失效,还是使用配置文件默认的rewrite规则

如果想跳转,就在tp中自定义错误页面吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值