【问题标题】:Trouble serving static files with my goapp through nginx无法通过 nginx 使用我的 goapp 提供静态文件
【发布时间】:2017-05-10 05:25:45
【问题描述】:

我正在 Ubuntu 服务器上制作我的第一个 go 应用程序。当我使用可执行文件或简单地运行 main.go 运行服务器时,我得到了要呈现的初始 html 页面,但没有 css、图像或 js。这些路线也将我带到了 404 页面。唯一似乎通过的是 index.html(它被命名为 index.gohtml 作为 go 的模板)

当我在 localhost 和服务器上的 ip:port 配置上运行它时,我的所有资产都已加载,但是当我使用 nginx 时,资产根本没有加载。由于这些因素,我假设 nginx 是我遇到问题的地方。

以下是我目前所拥有的。这是我第一次使用 nginx,所以我不知道正确配置它需要什么。

server {
    listen 80 default_server;
    listen [::]:80 default_server;


    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8001;

            try_files $uri $uri/ =404;

    }

}

【问题讨论】:

  • 您的文件的链接是否在没有 nginx 代理的情况下工作?您的索引模板的生成代码是什么?这是看文件的 URL 是什么。另外,如果您的应用程序在没有任何外部资源的情况下为漏洞站点提供服务,则不必设置root、index 和try_files
  • 文件在没有 nginx 代理的情况下加载。 index 中的 refs 指向索引位置的静态文件。我有需要加载的图像、JS 和 CSS。

标签: html nginx go static-files


【解决方案1】:

您可能希望将try_files 和proxy_pass 分隔到不同的位置:

location / {
    try_files $uri $uri/ @proxy;
}
location @proxy {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8001;
}

如果静态文件不存在,请求将被转发到运行在8001端口的服务。

详情请见this document。

【讨论】:

  • 重新配置后没有任何变化。根配置是否与它有关?
猜你喜欢
  • 2011-01-27
  • 2022-11-10
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-23
  • 1970-01-01
  • 2018-05-26
相关资源
最近更新 更多