将参数传递给@proxy 位置?
Pass param to @proxy location?
我想使用 NGINX 设置 nuxt 作为负载平衡器。此外,我想为图像添加一些缓存。
现在我的图片得到了 404:
location ~ ^/img.+\.(?:ico|gif|jpe?g|webp|png|woff2?|eot|otf|ttf|svg|js|css)$ {
expires 365d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri $uri/ @proxy;
}
location @proxy {
expires 365d;
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline';";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Cache-Status $upstream_cache_status;
proxy_redirect off;
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-Proto $scheme;
proxy_ignore_headers Cache-Control;
proxy_http_version 1.1;
proxy_read_timeout 1m;
proxy_connect_timeout 1m;
proxy_pass http://1649681_app/$request_uri;
#proxy_cache nuxt-cache;
#proxy_cache_bypass $arg_nocache; # probably better to change this
#proxy_cache_valid 200 302 60m; # set this to your needs
#proxy_cache_valid 404 1m; # set this to your needs
#proxy_cache_lock on;
#proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
#proxy_cache_key $uri$is_args$args;
}
似乎 $request_uri
在行 proxy_pass http://1649681_app/$request_uri
中是错误的 - 但我怎样才能将请求的路径传递到 @proxy
位置?
不,在命名(以及正则表达式)位置内使用变量为 proxy_pass
指令指定 URI 并非完全错误。然而,这样的事情会有一个缺点 - 如果你不能使用 IP 而不是主机名指定你的上游地址,你将需要一个 resolver
defined in your configuration (worse) or an additional upstream
block to define your 1649681_app
backend (better). More details can be found (完全相同也适用于命名位置)。
话虽如此,如果您不明确指定任何内容,您如何看待将什么请求 URI 传递给 proxy_pass
指令中指定的上游?它将 正好 正在处理的 URI(如果由于某种原因你需要传递修改后的 URI,你需要通过 rewrite
修改它规则)。
对于给定的配置,假设您不需要修改请求 URI 或查询参数,您应该简单地使用
proxy_pass http://1649681_app;
而且,您了解 $uri/
参数的确切含义吗?它使 try_files
指令检查给定的 URI 是否是在其中搜索索引文件的目录。我真的怀疑您是否需要使用 that 那种正则表达式模式。删除它,它只是一个额外的(某种昂贵的)系统内核 stat
调用。使用
try_files $uri @proxy;
相反。
我想使用 NGINX 设置 nuxt 作为负载平衡器。此外,我想为图像添加一些缓存。
现在我的图片得到了 404:
location ~ ^/img.+\.(?:ico|gif|jpe?g|webp|png|woff2?|eot|otf|ttf|svg|js|css)$ {
expires 365d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri $uri/ @proxy;
}
location @proxy {
expires 365d;
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline';";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Cache-Status $upstream_cache_status;
proxy_redirect off;
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-Proto $scheme;
proxy_ignore_headers Cache-Control;
proxy_http_version 1.1;
proxy_read_timeout 1m;
proxy_connect_timeout 1m;
proxy_pass http://1649681_app/$request_uri;
#proxy_cache nuxt-cache;
#proxy_cache_bypass $arg_nocache; # probably better to change this
#proxy_cache_valid 200 302 60m; # set this to your needs
#proxy_cache_valid 404 1m; # set this to your needs
#proxy_cache_lock on;
#proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
#proxy_cache_key $uri$is_args$args;
}
似乎 $request_uri
在行 proxy_pass http://1649681_app/$request_uri
中是错误的 - 但我怎样才能将请求的路径传递到 @proxy
位置?
不,在命名(以及正则表达式)位置内使用变量为 proxy_pass
指令指定 URI 并非完全错误。然而,这样的事情会有一个缺点 - 如果你不能使用 IP 而不是主机名指定你的上游地址,你将需要一个 resolver
defined in your configuration (worse) or an additional upstream
block to define your 1649681_app
backend (better). More details can be found
话虽如此,如果您不明确指定任何内容,您如何看待将什么请求 URI 传递给 proxy_pass
指令中指定的上游?它将 正好 正在处理的 URI(如果由于某种原因你需要传递修改后的 URI,你需要通过 rewrite
修改它规则)。
对于给定的配置,假设您不需要修改请求 URI 或查询参数,您应该简单地使用
proxy_pass http://1649681_app;
而且,您了解 $uri/
参数的确切含义吗?它使 try_files
指令检查给定的 URI 是否是在其中搜索索引文件的目录。我真的怀疑您是否需要使用 that 那种正则表达式模式。删除它,它只是一个额外的(某种昂贵的)系统内核 stat
调用。使用
try_files $uri @proxy;
相反。