我有一个有角度的4 SPA应用程序,我正在使用docker进行制作。到目前为止看起来很好通过终端,我转到/dist
文件夹,然后我使用以下命令让docker指向dist
的内容:
docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html nginx:alpine
我在浏览器上调用localhost:9090
并可以访问该应用。
问题是当我再次重新加载页面和/或作为特定路由时,我得到404 Not Found
和nginx版本,例如nginx/1.13.5
。
我一直在搜索并发现此问题:404 not found error on Nginx Ask,但遗憾的是没有解决方案。
如何解决此问题并避免404错误?这是我必须编辑的配置步骤吗?
答案 0 :(得分:6)
问题是在默认的nginx配置中它只使用index
指令。您需要的是try_files指令,该指令首先尝试uri
,然后转到index.html
要执行此操作,您需要传递自己的默认虚拟主机配置。像下面这样的东西应该工作。这基于Nginx's Docker Github
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri /index.html;
}
}
之后,应该只是将该文件作为正确位置的卷。
docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html -v (path_to_your_config):/etc/nginx/conf.d/default.conf nginx:alpine