nginx - NGINX如何重写路径名而不是文件?
问题描述
我有一个 NGINX 服务器,它在/
. UI 在 localhost:8081 上运行,服务器在 localhost:8080 上运行。
我需要将输入的任何路径名传递给 UI 的根目录。
例如:
localhost:8080/search
应该 proxy_pass 到localhost:8081
但不应更改文件:
localhost:8080/main.css
=>localhost:8081/main.css
这有效但不是动态的
我尝试为每个路径名使用单独的位置,但是我希望配置是动态的以供将来开发。
location / {
proxy_pass http://localhost:8081;
}
location /search {
proxy_pass http://localhost:8081/;
}
location /foobar {
proxy_pass http://localhost:8081/;
}
文件名处理程序
我尝试捕获文件名,但您不能在正则表达式位置块中使用 proxy_pass。
location ~* \.(.*?)$ {
proxy_pass http://localhost:8081/;
}
尝试文件
我尝试使用try_files
但 nginx 没有提供任何服务(提示我设置 nginx)
location / {
try_files $uri $uri/ @app;
}
location @app {
proxy_pass http://localhost:8081;
}
我的 Nginx 配置看起来像这样,没有位置块
worker_processes 1;
error_log /usr/local/etc/nginx/logs/error.log notice;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '[$time_local] $remote_addr - "$request" '
'$status "$http_referer" => "$proxy_host" $uri';
log_format log_server escape=json '$request_body';
access_log /usr/local/etc/nginx/logs/access.log main;
proxy_max_temp_file_size 0;
proxy_buffering off;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 8080;
server_name localhost;
rewrite_log on;
add_header 'Access-Control-Allow-Origin' 'http://localhost';
add_header 'Access-Control-Allow_Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,Keep-Alive,User-Agent,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
location / {
# stuff from above + headers
}
}
}
我正在使用 webpack 开发服务器进行本地开发,但是最终的捆绑包具有以下结构:
/root
bundle.js
main.css
index.html
cd6c777f1945164224dee082abaea03a.woff2
etc...
解决方案
推荐阅读
- azure - Azure 函数应用读取 O365 组邮箱
- javascript - 如何将 JavaScript 函数转换为在 typescript 中工作
- javascript - 如何在角度中使用电子饼干
- javascript - 使用 PropTypes.InferProps 和默认参数时如何删除 Object is possible is 'null' TS2531 警告?
- animation - 是否可以在 Flutter 中制作液体动画?
- angular - Angular:当组件发生更改时如何提供视觉/UI提示?
- node.js - 按百分比排序数组,但如果用户具有相同的百分比,则按杀戮排序
- javascript - 有什么方法可以知道 socket.io 连接来自哪个域?
- c# - SqlKata - 加入字符串值和 ISNULL 条件
- javascript - 如何在javascript中检测数据属性