nginx代理出现静态资源读取不到

本文介绍如何正确配置Nginx以实现有效的反向代理,特别是针对静态资源的正确读取方式。文中提供了具体的Nginx配置示例,包括如何通过proxy_pass指令指向正确的服务器地址,并确保HTTP头部信息能正确传递给后端应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:读取到是nginx服务器地址下的静态资源,而非被代理服务器的静态资源。
解决:设置如下,形似动静分离

# 反向代理时,静态资源文件读取地址不是实际服务器地址,而是nginx的地址,需要如下配置才能真正读取到静态资源
location ~ .* {
	proxy_pass 	http://192.168.93.105;
	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
}

主要作用是 proxy_set_header Host $http_host$http_host,如果 $host 依旧不会有效。该处原因暂未明确

2、反向代理可以直接在location 中指定 proxy_pass http://192.168.93.105:8082; 或者 通过 upstream domain 指定服务组,然后指定服务组名(domain)进行代理:proxy_pass http://server_8082;

location / {
	# 反向代理。负载均衡可通过upstream设置多个服务器
	proxy_pass	http://server_8082; 
	# proxy_pass	http://192.168.93.105:8082;
	# 下面几个配置,意思是将http头转发给后端应用,不然你后端应用服务拿客户端IP地址的时候拿到的是nginx代理的地址而不是客户端的。
	#proxy_set_header Host $host;
	#proxy_set_header X-Real-IP $remote_addr;
	#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #root   html;
    index  index.html index.htm;
}

综合

# 设置负载服务器池(服务组),如果有域名采用域名作为名称
upstream server_8082 {
	server	192.168.93.105:8082 weight=2;
	#server	192.168.0.105:8083 weight=1;
}
server {
    listen       8082;
    server_name  localhost;
     
    location / {
		# 反向代理。负载均衡可通过upstream设置多个服务器
		proxy_pass	http://server_8082; 
		# proxy_pass	http://192.168.93.105:8082;
		# 下面几个配置,意思是将http头转发给后端应用,不然你后端应用服务拿客户端IP地址的时候拿到的是nginx代理的地址而不是客户端的。
		#proxy_set_header Host $host;
		#proxy_set_header X-Real-IP $remote_addr;
		#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #root   html;
        index  index.html index.htm;
    }

	# 反向代理时,静态资源文件读取地址不是实际服务器地址,而是nginx的地址,需要如下配置才能真正读取到静态资源
	location ~ .* {
		proxy_pass	http://server_8082; 
		# proxy_pass	http://192.168.93.105:8082;
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
	}
	 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

参考1
参考2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值