nginx反向代理返回404错误

时间:2018-07-09 04:13:18

标签: nginx reverse-proxy

我正在尝试设置一个反向代理,该代理可以将所有请求从 mysite.com:3005/Photos / 重定向到 mysite.com/Photos /

我已在 sites-available 文件夹中的配置文件中设置了反向代理。

以下是配置文件设置:

 server {
  listen   80;
  root /var/www/html/mysite.com/site1/;
  index index.php index.html index.htm istaff.html index.cgi;
  server_name localhost *.mysite.com;

  location /api/{
                proxy_pass http://127.0.0.1:3001/api/;
  }

  location /site1/{
     proxy_pass http://127.0.0.1:80/site1/;
  }

  location /Photos/ {
      proxy_pass http://127.0.0.1:3005/Photos/;
  }

当我在URL中输入:3005时,我现在可以访问该图像,但是没有端口号,就会出现404错误。

1 个答案:

答案 0 :(得分:1)

拥有日志并知道您尝试使用哪个URL来访问图像将很有帮助。看起来您遇到的问题是URL匹配和转发。

根据我对您的配置文件的读取,访问:

http://example.com/Photos/sample.jpg

将http请求代理到:

http://example.com:3005/Photos//Photos/sample.jpg

“在URL中放入:3005时”不会出现404错误,因为您实际上并未使用Nginx代理该呼叫。

您应该将Nginx配置调整为如下所示:

server {
    listen   80;
    root /var/www/html/mysite.com/site1/;
    index index.php index.html index.htm istaff.html index.cgi;
    server_name localhost *.mysite.com;

    location /api {
        proxy_pass http://127.0.0.1:3001;
    }

    location /site1 {
        proxy_pass http://127.0.0.1:80;
    }

    location /Photos/ {
        proxy_pass http://127.0.0.1:3005;
    }
}

根据Nginx的运行方式,您可能会对/ site1位置转发流量产生疑问。看起来好像是在将流量路由回自己。但是,如果Nginx在外部环路上侦听,并且您将流量转发到内部环路,则应该可以正常工作。