我有一个Next.js静态导出site,我部署了Docker和Nginx。我正在使用Cloudflare进行DNS和SSL。我可以使用https://mansourlotfi.ir访问我的网站,但当我尝试访问https://www.mansourlotfi.ir时,我得到一个“404页面未找到”。
Dockerfile
FROM hub.hamdocker.ir/nginx:1.22.0
COPY ./out ./project
RUN rm ../etc/nginx/conf.d/default.conf
COPY ./nginx-configs ../etc/nginx/conf.d
nginx-configs文件夹中的settings.conf
server
{
listen 80;
server_name www.mansourlotfi.ir;
return 301 https://mansourlotfi.ir$request_uri;
}
server
{
listen 80;
server_name c13.hamravesh.hamserver.ir;
return 301 https://mansourlotfi.ir$request_uri;
}
server
{
listen 80;
server_name mansourlotfi.ir;
root /project;
location /
{
index index.html;
try_files $uri $uri/ /index.html =404;
}
error_page 404 /404.html;
location = /404.html
{
internal;
}
}
cloudflare DNS配置
注意:我已经在Cloudflare中添加了example.com和www.example.com的CNAME记录,指向我的服务器的相同IP地址。
另外,当我访问一个不存在的路由(如example.com/asd)时,它不会显示Next.js 404页面,而是显示主页。我已经阅读了社区中所有与此问题相关的主题,但不幸的是,我没有成功。谢谢你的帮助
2条答案
按热度按时间txu3uszq1#
您似乎没有正确包含服务器块
您可以在此处更改设置。conf
请确保在nginx-configs文件夹中设置.conf文件,并重新构建和重新部署Docker容器以应用更改。
m3eecexj2#
Dockerfile、Cloudflare和nginx中www版本的所有设置都是正确的。还有一样东西不见了:我不得不将我的域名www添加到运行我的容器化应用程序的主机设置中。
这解决了我的问题,现在我可以看到我的网站与www.