nginx访问另一台服务器上的文件

该博客介绍了在前后端分离的架构中,如何通过Nginx配置实现A服务器对B服务器上文件的访问。A服务器通过try_files指令重定向到@new_uploads,然后使用proxy_pass代理到B服务器的特定端口。B服务器的Nginx配置中,通过location指令和alias将请求指向实际的文件存储路径,开启目录索引。

因项目前后端分离,前端和后端在两台服务器上,所以文件上传之后的访问需在两台服务器上都安装nginx,如下:A服务器访问B服务器的文件

A服务器nginx配置:

#给出的file都没有匹配到,则重新请求最后一个参数给定的uri,就是新的location匹配
location /oss-data/ets/{
		try_files $uri @new_uploads;
}
location @new_uploads{
		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_pass http://xxx.xx.xxx.xxx:110;
}

B服务器nginx配置:

server {
        listen       110;
        server_name  localhost;
		location /oss-data/ets {
			alias  /oss-data/ets/;
			autoindex on;
		}
     }
### 配置 Nginx 访问远程服务器上的静态资源 在实际应用中,Nginx 可以通过代理的方式访问远程服务器上的静态资源。以下是配置的详细说明和示例代码: #### 1. 使用 `proxy_pass` 实现远程静态资源访问 Nginx 的 `proxy_pass` 指令可以将请求转发到另一台服务器上,从而实现对远程静态资源的访问。以下是一个典型的配置示例: ```nginx server { listen 80; server_name example.com; location /static/ { 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_pass http://192.168.1.10:80/static/; # 远程服务器的地址和路径 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ``` 上述配置中,当用户访问 `http://example.com/static/` 时,Nginx 会将请求转发到 `http://192.168.1.10:80/static/`[^3]。 #### 2. 使用 `alias` 和 `try_files` 处理本地或远程资源 如果需要优先从本地查找资源,找不到时再从远程服务器获取,可以结合 `alias` 和 `try_files` 使用: ```nginx server { listen 80; server_name example.com; location /upload/ { alias /data/local/upload/; try_files $uri @remote_server; } location @remote_server { 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_pass http://192.168.1.20:80/upload/; } } ``` 在此配置中,Nginx 会首先尝试从本地路径 `/data/local/upload/` 查找资源,如果找不到,则通过 `@remote_server` 转发请求到远程服务器 `http://192.168.1.20:80/upload/`[^3]。 #### 3. 设置缓存以优化性能 为了提高性能,可以为远程静态资源设置缓存。例如: ```nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; location /static/ { proxy_cache my_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 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_pass http://192.168.1.10:80/static/; } } ``` 此配置中,Nginx 将远程服务器返回的静态资源缓存在本地路径 `/var/cache/nginx` 中,有效减少重复请求带来的延迟[^4]。 #### 4. 注意事项 - 确保远程服务器允许来自当前 Nginx 服务器的请求。 - 如果远程服务器使用 HTTPS,请确保正确配置 SSL/TLS,并在 `proxy_pass` 中指定 `https://` 协议。 - 测试配置文件是否正确:`nginx -t`,然后重新加载配置:`systemctl reload nginx`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream答案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值