如何解决nginx上的404错误?

时间:2017-11-02 14:13:53

标签: angular nginx single-page-application

我有一个有角度的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错误?这是我必须编辑的配置步骤吗?

1 个答案:

答案 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