首页 新闻 会员 周边

nginx代理php,如何为php设置访问地址为子路径

0
悬赏园豆:100 [待解决问题]

我有一个域名,假设为example.com,后端nginx已经代理了一个tomcat,代理域名是http://www.example.com/,会跳转到tomcat服务,目前这是正常的。

现在我想再增加一个php服务,在同一个服务器上,用同一个nginx代理,url路径为“http://www.example.com/php”,访问到/data/wwwroot/php下的php代码。

但是,访问http://www.example.com/php的时候会转发的tomcat服务上面,提示“HTTP状态 404 - 未找到”,后缀显示是Apache Tomcat服务。

所以我怀疑代理没有生效,当我将php代理的域名换成其他的时候,比如php.example.com,代理是成功的,但是我不想遇到跨域的问题。请问php应该怎么设置才行

这是nginx代理tomcat的配置
server {
listen 80;
server_name www.example.com;

location / {
    proxy_pass http://localhost:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    proxy_set_header X-Host $host:$server_port;
    proxy_set_header X-Scheme $scheme;
    proxy_connect_timeout 30s;
    proxy_read_timeout 86400s;
    proxy_send_timeout 30s;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

}

这是nginx代理php的配置,这里不正常
server {
listen 80;
server_name www.example.com;

location /php {
    try_files $uri $uri/ /index.php$is_args$args;
    alias  /data/wwwroot/php;
    index index.php index.htm index.html;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

}

小半杯绿茶的主页 小半杯绿茶 | 初学一级 | 园豆:102
提问于:2024-05-13 12:15
< >
分享
所有回答(2)
0

try_files 指令最后一个参数似乎会重走一遍匹配,当重走匹配的时候由于已经不带 /php 前缀,所以会匹配到tomcat里面,
建议把 location ~ .php$ 这个 匹配放到外面,和 /php 同级别。
这样当 重走匹配的时候 由于带 .php 后缀,就会匹配到 ~ .php$ 里面

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2024-05-14 14:43
0

location /php {
    proxy_pass php服务地址;
}

 

如上是最简单的配置,可以按此思路试试。

幻天芒 | 园豆:37205 (高人七级) | 2024-06-15 10:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册