nginx代理参数proxy_pass的实现

 更新时间:2024年04月29日 11:25:53   作者:liujiangxu  
proxy_pass参数用于配置反向代理,本文主要介绍了nginx代理参数proxy_pass的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

proxy_pass参数用于配置反向代理,指定客户端请求被转发到后端服务器,后端地址可以是域名、ip端口URI

代理后端报错提示本地找不到CSS文件、JavaScript文件或图片

例如:nginx :10.1.74.109
后端服务:http://10.1.74.109:8082

参数配置:

location /harbor {
            proxy_pass http://10.1.74.109:8082;
    }

在这里插入图片描述

访问http://10.1.74.109/zabbix 显示不全,提示文件css等静态文件不存在。

原因在于proxy_pass确实指向后端服务器,但浏览器加载页面时,可能会请求一些静态资源,但是这些请求可能不包含/zabbix前缀,也可能静态资源是动态生成的,因此才会去本地去查找这些文件

例如以上后端登录前访问得地址为http://10.1.74.109:8082/,登录成功后得地址为http://10.1.74.109:8082/zabbix.php?action=dashboard.view,没有包含/zabbix前缀

如果当后端地址后缀不会发生改变的前提代理,一般来说是正常的

处理方式:使用proxy_set_header设置正确的Host头

location /zabbix {  
    proxy_pass http://10.1.74.109:8082/;  #url后面必须加上"/"
    proxy_set_header Host $host;  
    proxy_set_header X-Real-IP $remote_addr;  
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    keepalive_timeout 500; 
}
参数含义
proxy_set_header Host $host;nginx在转发请求时,将Host请求头的值设置为原始请求的主机名和端口,后端可能依赖Host头来确定应该提供那些内容
proxy_set_header X-Real-IP $remote_addr;X-Real-IP用于设别发起请求客户端的真是IP地址,$remote_addr是一个变量包含客户端的IP地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;X-Forwarded-For 表示HTTP请求的来源地址,用于追踪请求来源,$proxy_add_x_forwarded_for 是一个特殊的变量,包含原始请求的 X-Forwarded-For 头(如果存在的话)和客户端的 IP 地址。后端服务器可以看到所有经过的代理服务器和原始客户端的 IP 地址。
keepalive_timeout 500;设置长连接超时时间,当客户端和服务器之间建立一个长连接后,该连接会在设置时间内保持打开状态,以便客户端通过相同的连接发送多个请求,减少连接开销,提高性能

proxy_pass不同写法的影响

客户端请求地址为:www.ljx.com/a.html

方式一:proxy_pass http://10.1.1.1;

location /ceshi/
{
    proxy_pass http://10.1.1.1;
    ...
} 
  • 请求地址:www.ljx.com/ceshi/a.html
  • 代理后地址:http://10.1.1.1/ceshi/a.html
  • 解释:完整的请求URI(包括/ceshi/a.html)将被发送到后端服务器10.1.1.1。由于proxy_pass没有指定URI部分,因此原始请求的URI保持不变。

方式二:proxy_pass http://10.1.1.1/;

location /ceshi/
{
    proxy_pass http://10.1.1.1/;
    ...
} 
  • 请求地址:www.ljx.com/ceshi/a.html
  • 代理后地址:http://10.1.1.1/a.html
  • 解释:由于proxy_pass后面有一个斜杠/,nginx会忽略原始请求URI中的/ceshi/部分,只保留a.html部分,并将其发送到后端服务器

方式三:proxy_pass http://10.1.1.1/index/;

location /ceshi/
{
    proxy_pass http://10.1.1.1/index/;
    ...
} 
  • 请求地址:www.ljx.com/ceshi/a.html
  • 代理后地址:http://10.1.1.1/index/a.html
  • 解释:原始请求的URI中的/ceshi/被替换为/index/,然后发送到后端服务器。路径的其余部分a.html保持不变

方式四:proxy_pass http://10.1.1.1/somepath;

location /ceshi/
{
    proxy_pass http://10.1.1.1/somepath;
    ...
} 
  • 请求地址:www.ljx.com/ceshi/a.html
  • 代理后地址:http://10.1.1.1/somepath
  • 解释:无论原始请求的URI是什么,都会被完全替换为proxy_pass后面指定的URI(在这里是/somepath)。查询字符串(如果有的话)也会被忽略

到此这篇关于nginx代理参数proxy_pass的实现的文章就介绍到这了,更多相关nginx proxy_pass内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • nginx代理参数proxy_pass的实现

    nginx代理参数proxy_pass的实现

    proxy_pass参数用于配置反向代理,本文主要介绍了nginx代理参数proxy_pass的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Nginx防止直接用IP访问Web服务器的设置方法

    Nginx防止直接用IP访问Web服务器的设置方法

    看了很多Nginx的配置,好像都忽略了ip直接访问Web的问题,这样理论上不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面
    2012-09-09
  • 在Ubuntu20.04上安装Kubernetes集群

    在Ubuntu20.04上安装Kubernetes集群

    容器化为开发人员提供了很大的灵活性,最常用的容器化应用程序之一是 Docker,在容器上部署服务的主要原因之一是它们灵活、轻量级并且在部署在数百台机器上时易于扩展,但是,谁来管理所有这些容器?这就是 Kubernetes 发挥作用的地方
    2023-12-12
  • 在Linux和Windows系统上安装Nginx服务器的教程

    在Linux和Windows系统上安装Nginx服务器的教程

    这篇文章主要介绍了在Linux和Windows系统上安装Nginx服务器的教程,Linux系统这里以CentOS为代表,需要的朋友可以参考下
    2015-08-08
  • shell脚本之nginx自动化脚本

    shell脚本之nginx自动化脚本

    今天小编就为大家分享一篇关于shell脚本之nginx自动化脚本,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 在nginx中配置pathinfo模式支持thinkphp的URL重写

    在nginx中配置pathinfo模式支持thinkphp的URL重写

    这篇文章主要介绍了在nginx中配置pathinfo模式的例子,用来支持thinkphp的URL重写,并解决了thinkphp一个路径问题,需要的朋友可以参考下
    2014-04-04
  • Nginx反向代理学习实例教程

    Nginx反向代理学习实例教程

    nginx作为web服务器一个重要的功能就是反向代理,当然你也可以使用nginx配置正向代理,这篇文章主要给大家介绍了关于Nginx反向代理的相关资料,需要的朋友可以参考下
    2021-10-10
  • 关于nginx没有跳转到upstream地址的解决

    关于nginx没有跳转到upstream地址的解决

    这篇文章主要介绍了关于nginx没有跳转到upstream地址的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 教你nginx跳转配置的四种方式

    教你nginx跳转配置的四种方式

    现如今随着应用服务的增多,服务可能部署在不同的服务器上,下面这篇文章主要给大家介绍了关于nginx跳转配置的四种方式,需要的朋友可以参考下
    2022-07-07
  • Nginx 实现灰度发布的三种方法总结

    Nginx 实现灰度发布的三种方法总结

    这篇文章主要介绍了Nginx 实现灰度发布的三种方法总结的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论