问题描述
我有一个可运行的Laravel应用,并引入了一个子域(api.mysite.com)来处理用户的程序化访问。我已经在路线文件顶部设置了路线组:
Route::group(['domain' => 'api.' . config('app.domain'),'middleware' => 'api'],function () {
Route::get('/some-endpoint','APIController@someHandler');
});
此安排在本地有效。
我在DNS记录中添加了一个A记录,将api
子域指向了站点IP:
A Record api XX.XXX.XXX.XXX Automatic
问题是,当我尝试访问部署到生产环境中的api.mysite.com/some-endpoint
时,站点响应为301,并尝试将我重定向到mysite.com/some-endpoint
,该路由在我的路由文件中没有路由,并且因此会回复404。
解决方法
该问题存在于我的Nginx配置文件中。在 <Route
exact
path="/"
render={() => (
<StartScreen
useVal={useVal}
/>
)}
/>
部分,我需要更改行
server
到
server_name mysite.com;
请参见this related question。但是请注意,由诸如server_name .mysite.com;
之类的名称引起的通配符服务器名称查找要比由诸如.mysite.com
之类的明确定义的名称所引起的查找慢。
另请参阅nginx documentation:
以“ .example.org”形式出现的特殊通配符名称可以用于匹配确切名称“ example.org”和通配符名称“ * .example.org”。