You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx同域名部署Laravel与QGIS Server时/qgisserver路径404如何解决

问题原因

配置失效的核心原因是:Nginx 对相同监听端口、相同server_name的多个server块,只会加载最先读取到的块作为默认请求处理块,其余同匹配规则的server块不会参与请求匹配。你单独为QGIS Server写的虚拟主机和Laravel虚拟主机完全同监听80端口、同绑定121.123.124.124这个IP,Nginx实际只会用Laravel的server块处理所有请求,你写的/qgisserver匹配规则根本没有被加载,请求最终走到Laravel的路由兜底逻辑,返回Laravel的404页面。
另外你原来的QGIS location配置缺少必要的fastcgi脚本路径参数,就算规则被加载也无法正常转发请求到QGIS服务。

配置步骤
  • 第一步:删除独立的QGIS Server虚拟主机软链接,避免配置冲突
sudo rm /etc/nginx/sites-enabled/你之前创建的qgis server配置文件名
  • 第二步:编辑原有Laravel对应的Nginx虚拟主机配置文件,在location /规则之前添加QGIS Server的匹配规则,补全必要的fastcgi参数。
    修改后的完整配置参考如下:
server {
    listen 80;
    server_name 121.123.124.124;
    
    root /var/www/html/laravel-app/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    # QGIS Server 规则放在最前面,优先级高于通用路径匹配
    location ~ ^/qgisserver(/.*)?$ {
        gzip           off;
        include        fastcgi_params;
        fastcgi_pass   unix:/var/run/qgisserver.socket;
        # 指定QGIS Server的fcgi执行脚本路径,按你实际安装路径调整
        fastcgi_param  SCRIPT_FILENAME /usr/lib/cgi-bin/qgis_mapserv.fcgi;
        fastcgi_param  PATH_INFO $1;
        # 如有自定义QGIS项目路径,可在这里追加参数,例如
        # fastcgi_param QGIS_SERVER_PROJECTS_DIRECTORY /data/qgis/projects;
    }

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

注意:配置里的/usr/lib/cgi-bin/qgis_mapserv.fcgi是QGIS Server默认安装的fcgi脚本路径,如果你的安装路径不同,替换成实际路径即可。

  • 第三步:校验配置并重载Nginx
# 校验配置语法,无报错再执行重载
sudo nginx -t
# 重载Nginx使配置生效
sudo systemctl reload nginx
验证方法

浏览器访问http://121.123.124.124/qgisserver?SERVICE=WMS&REQUEST=GetCapabilities,如果返回XML格式的WMS服务能力文档,说明QGIS服务配置正常;根路径访问Laravel应用无异常即满足同端口共存需求。


内容的提问来源于stack exchange,提问作者watkib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:54:26