Laravel+Homestead+nginx 代理:在我的路线中获取正确的 url
Posted
技术标签:
【中文标题】Laravel+Homestead+nginx 代理:在我的路线中获取正确的 url【英文标题】:Laravel+Homestead+nginx proxy: Getting the right url in my routes 【发布时间】:2016-08-01 11:46:52 【问题描述】:我有一个带有 Laravel 5 项目的专用服务器,并且 Homestead 已正确安装和工作。 我刚刚在 Homestead.yml 中添加了一个 todo.app 行,如下所示:
sites:
- map: todo.app
to: /home/vagrant/Code/todo-app/public
为了从外部访问它,我配置了一个 nginx 反向代理,如下所示:
location /todo/
resolver 127.0.0.1;
proxy_pass http://todo.app:8000/;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后,我在 hosts 文件中添加了一行,将 todo.app 解析为 127.0.0.1 并安装了 dnsmasq 作为 nginx 的解析器。
如果我浏览 http://dev.mydomain.com/todo,我会得到一切正常工作,除了我的路由:框架将生成的每个 URL 都会忘记子目录。例如,登录 URL 是:http://dev.mydomain.com/login,但应该是 http://dev.mydomain.com/todo/login。更改 .env 文件中的 APP_URL 将无济于事。
【问题讨论】:
我设置了 127.0.0.1 而不是 192.168.10.10,因为我的专用服务器中的网络环境不允许我访问它。 【参考方案1】:您是否尝试过将所有路线分组并为所有路线添加“待办事项”前缀? 这是一个例子:
Route::group(['prefix' => 'todo'], function()
Route::get('index','HomeController@index')->name('Homepage');
...
//The rest of the routes
如果您愿意为此安装修改代码,这可能是您的解决方案。
如果您需要在预定义路由上自定义行为并且正在使用:
Route::auth();
在您的路由文件中,您应该删除该行并创建您自己的路由。您可以使用以下屏幕截图作为指导,查看上一个命令自动为您生成的内容,并使用它来自定义和创建您自己的:
请查看:http://i.stack.imgur.com/ep9cD.png
您可以使用:
php artisan route:list
在您自己的解决方案中复制图像的命令。
【讨论】:
它不起作用。我访问我的 webapp 的 URL 变为 dev.mydomain.com/todo/todo 并且框架生成的 URL 保持不变:dev.mydomain.com/login 你使用的是什么版本的 Laravel? 5.1 还是 5.2?以上是关于Laravel+Homestead+nginx 代理:在我的路线中获取正确的 url的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Nginx 站点配置文件(Homestead)
为啥 laravel homestead 没有运行 Apache