【问题标题】:Laravel 4 nginx servername/myappnameLaravel 4 nginx 服务器名/myappname
【发布时间】:2026-01-12 22:55:01
【问题描述】:

我尝试让我的生产服务器以与 phpmyadmin 相同的风格为我的应用程序提供服务。就像 example.com/phpmyadmin 一样,我尝试做的是 example.com/myappname。

我的 nginx/sites-available/default 看起来像这样:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www;
        index index.html index.htm index.php;

        server_name _;

        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }

        location /myapp {
                root /var/www/myapp/public/;
                index index.php;
        }

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                       include /etc/nginx/fastcgi_params;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }


        location ~ /\.ht {
                deny all;
        }
}

因此,如果有人对此有一个有效的 conf,我也想拥有它!

【问题讨论】:

  • 也许你可以分享一下你的配置有什么用?

标签: nginx laravel laravel-4


【解决方案1】:

请注意,您的 /phpmyadmin 位置有额外的配置,可以通过 fast_cgi 配置将请求传递给 PHP-FPM。

您也需要为您的/myapp 位置执行此操作。

您可能希望将您的 myapp 位置更改为以下内容:

location ^/myapp/(.+\.php)$ {
    root /var/www/myapp/public/;
    index index.php;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
}

作为比较,这是我的Laravel nginx configuration - 但是我的应用程序没有在“子目录”下运行。

尝试更改一些配置项,看看您可以开始工作。请注意,我从 Laravel 应用程序位置删除了 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - 我认为没有必要。

最后,这对 ServerFault 是否更有意义?在那里你可能会得到更好的答案。

【讨论】: