我有一个go api,它也提供静态文件和一个单独的svelte-kit静态站点,我用nginx提供。
有一个问题的配置与try_files我假设。与try_files行#1,网站工作得很好,但我不能查看静态文件,因为没有被重定向到去API,这是服务于这些...
try_files #2修复了静态文件,但问题是,在我硬刷新页面后,很少有页面被破坏,我以nginx 403或404错误结束。
我不能让静态文件和页面在刷新后正常工作。我尝试了一些类似于#3的例子,但它是一样的...基本上我想访问那些静态文件在mysite.co/public/images.logo.png
的例子。我需要一个单独的nginx块,我不能弄清楚。
nginx配置文件
upstream backend {
server 127.0.0.1:3001;
}
server {
server_name mysite.co www.mysite.co;
location / {
root /var/www/mysite.co;
index index.html;
#1 try_files $uri $uri/ /index.html;
#2 try_files $uri $uri/ @go-api;
#3 try_files $uri $uri.html /index.html @go-api;
}
location @go-api {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header x-forwarded-proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
location /api/ {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header x-forwarded-proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
配置文件
import adapter from '@sveltejs/adapter-static';
import preprocess from 'svelte-preprocess';
const config = {
preprocess: preprocess(),
kit: {
adapter: adapter({
pages: 'build',
assets: 'build',
fallback: 'index.html',
precompress: false,
}),
prerender: {
default: true,
},
},
};
export default config;
我正在使用此代码在/public提供静态文件(使用chi路由器)
subFS, err := fs.Sub(a.PublicFS(), "public")
if err != nil {
panic("failed to serve static files: " + err.Error())
}
r.Handle("/public/*", http.StripPrefix("/public/", http.FileServer(http.FS(subFS))))
1条答案
按热度按时间ncgqoxb01#
如果您的所有静态文件都可以在
mysite.co/public
路径下使用,请将此块添加到您的配置中:它会将包含
public
子字符串的路径的流量重定向到go api,而不是在svelte静态站点上搜索这些文件。