nginx 上反向代理别名后面的 Nette
P粉953231781
P粉953231781 2023-09-04 00:28:05
[PHP讨论组]

我有一个在 Apache2/Debian 11 服务器上运行的 Nette 应用程序,运行良好。但是,我们需要使用别名将其隐藏在 nginx 代理后面。

假设我们有一个运行在 http://127.0.0.1:89/ 上的完美 Apache2 环境,并且我们希望通过设置为反向代理的 nginx 来访问它,地址为 https://example.com/应用程序/

nginx设置如下:

location /app/ {
    proxy_pass http://127.0.0.1:89;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto "https";
    proxy_set_header X-Forwarded-Port "443";
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

虽然 Apache2 配置在代理尝试之前保持不变:

<VirtualHost *:89>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/app/www/
        <Directory /var/www/app/www/>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

问题是,Nette 应用程序仍然认为它在没有“/app”URI 部分的路径上运行,因此通过重定向和链接调用生成的所有链接(包括 $basePath 模板变量)都是无效的。< /p>

我还将代理信息附加到 Nette 配置中,并且由于 nginx 实例在同一服务器上运行,因此它看起来如下:

http:
    proxy: 127.0.0.1

我尝试将 nginx 配置设置为转发转发的 URI 中的 /admin 路径:

proxy_pass http://127.0.0.1:89/admin;

并且还尝试摆弄 Nette 路由器以过滤掉“admin/”部分(不寻找 AdminPresenter,这显然是缺失的):

$router->addRoute('[admin/]<presenter>/<action>[/<id>]', 'Homepage:default');

Nette 应用程序在尝试访问该页面时产生此错误:

TypeError: unpack() expects parameter 2 to be string, bool given in /var/www/app/vendor/nette/http/src/Http/Helpers.php:49  @  http://example.com/app/

有人可以给我指出正确的方向吗?

P粉953231781
P粉953231781

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号