首页 > 系统相关 >nginx下的proxy_pass使用

nginx下的proxy_pass使用

时间:2023-12-21 12:14:19浏览次数:26  
标签:return nginx html proxy pass http local

之前的文章说到了,return,rewrite的使用,以及它们的使用场景,今天再来说一种代理的使用,proxy_pass,它属于nginx下的ngx_http_proxy_module模块,没有显示的重定向(看不到30x的重定向),客户端是不知道的,是服务器内部进行转发的

浏览器访问地址:http://m.9000.local/index/get,执行代码如下:

$a = file_get_contents("http://return.local/redirect?a=1&b=2");
$a = Tools::https_request("http://return.local/redirect?a=1&b=2", [
    'aa' => 1,
    'bb' => 2,
    'cc' => 3,
    'dd' => 4
]);//此处使用curl post方式发起请求
echo $a;

return.local的nginx配置如下:

server {
	listen        80;
	server_name  return.local;
    
	location /redirect {
		proxy_pass http://m.9000.local/index/api;
	}
}

http://m.9000.local/index/api的执行代码如下:

echo '请求方式:'.$_SERVER['REQUEST_METHOD'];

echo '<hr>';
echo 'get请求的参数';
print_r($_GET);

echo '<hr>';
echo 'post请求的参数';
print_r($_POST);

执行结果如下:

结论

1、proxy_pass代理 ,把请求方式,get参数,post参数,到代理到新地址了,且客户端没有发生显示的重定向

2、无论是浏览器请求,postman,或者curl,客户端请求,都能成功

注意

proxy_pass地址有个斜杠(/)的问题要注意下,举例说明

代理地址后面没有路径了,只有域名或者ip+端口(可选)的情况下,会受location中路径部分的影响

server {
	listen        80;
	server_name  return.local;
    
	location /proxy {
		#代理地址末尾不带斜杠,nginx将会保留location中路径部分
		#如果访问:http://return.local/proxy.html
		#等于访问:http://i.9000.local/proxy.html
		proxy_pass http://i.9000.local;
		
		
		#代理地址末尾带斜杠,nginx将使用诸如alias的替换方式对URL进行替换,并且这种替换只是字面上的替换
		#如果访问:http://return.local/proxy.html
		#则 http://return.local/proxy 被替换成 http://i.9000.local/ 然后再加上.html部分,最后访问:http://i.9000.local/.html
		proxy_pass http://i.9000.local/;
	}
}
server {
	listen        80;
	server_name  return.local;
    
	location /proxy.html {
		#访问http://return.local/redirect.html,实际访问http://m.9000.local/
		proxy_pass http://m.9000.local/;
		
		#访问http://return.local/redirect.html,实际访问http://m.9000.local/proxy.html
		proxy_pass http://m.9000.local;
	}
}

代理地址后面有自己的路径的情况下,不受location中路径部分的影响

server {
	listen        80;
	server_name  return.local;
    
	location /redirect.html {
		#访问http://return.local/redirect.html直接代理到另外一个地址
		proxy_pass http://m.9000.local/index/api;
		
		#如果代理地址后面加了路径,则末尾不管是不是斜杠,都不会受location的路径的替换影响,因此,这2个写法是一样的效果
		proxy_pass http://m.9000.local/index/api/;
	}
}

 

标签:return,nginx,html,proxy,pass,http,local
From: https://www.cnblogs.com/firstlady/p/17918679.html

相关文章

  • docker 部署 es + nginx
    ES安装elasticsearch.ymlcluster.name:"docker-cluster"node.name:"node-1"network.host:0.0.0.0discovery.seed_hosts:["127.0.0.1"]cluster.initial_master_nodes:["node-1"]#开启跨域访问支持,默认为falsehttp.cors.enabled:t......
  • nginx配置本地域名地址
    打开nginx.conf文件,修改server_name中的localhost为域名 访问本地电脑路径,C:\Windows\System32\drivers\etc,修改hosts文件。一般是没有修改权限的,还要如下操作   ......
  • 在arm架构的银河麒麟系统部署Nginx
    以下是在arm架构的银河麒麟系统上部署Nginx的详细步骤:1.创建文件夹首先,在合适的位置创建必要的文件夹。在本例中,我们将创建/opt/nginx和/usr/src/nginx两个文件夹。mkdir/opt/nginxmkdir/usr/src/nginx2.准备Nginx及其依赖包切换至/usr/src/nginx目录,并从以下地址下载......
  • nginx下的return的使用笔记
    nginx下return的功能是重定向,下面是具体用法和注意事项状态码 说明请求方式参数代码结果200正常请求,正常返回GET、POST-301永久重定向GET、POST-301永久重定向GETa=1&b=2参数可以继续传递到新地址301永久重定向POSTaa=11bb=22变成......
  • nginx相关报错
     #openresty-sreloadnginx:[warn]conflictingservername"community-gw.xxx.cn"on0.0.0.0:80,ignorednginx:[warn]conflictingservername"apusai.com"on0.0.0.0:80,ignorednginx:[warn]conflictingservername"rlnk.net"......
  • Nginx 服务器的基本原理和配置指南
    什么是Nginx?Nginx(EngineX)是一个轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器、高性能的HTTP服务器,它以高稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。什么是反向代理?反向代理(ReverseProxy)方式是指以代理服务器来接受inter......
  • DrawCall、Batches、SetPassCalls
    详细看:https://blog.csdn.net/csuyuanxing/article/details/123005558https://blog.csdn.net/chqj_163/article/details/107675176一个batch是一个批次(cpu将一次渲染所需信息打包好准备发给gpu)一个drawcall是一次渲染指令的调用,基本等于batch,但可能受带宽的限制,一个大的batch......
  • Nginx+keepalived实现高可用负载群集
    Nginx+keepalived实现方式使用Nginx作为负载调度器,通过四层代理转发给web服务器处理请求,实现负载均衡; 在Nginx调度器上配置脚本监控(健康检查),实现主备热备份,当主失效切换至备工作。部署案列Web服务器1:192.168.19.23(VIP192.168.19.200)Web服务器2:192.168.19.28(VIP192.168......
  • 搭建lnmp环境-nginx关联php-fpm (第三步)
     永久关闭防火墙sudosystemctlstopfirewalldsudosystemctldisablefirewall 安装php扩展 php-fpmyum-y installphp-fpm systemctlstart php-fpm.servicesystemctlenable php-fpm.service  修改php-fpm用户/etc/php-fpm.d/www.conf新增用户:www(userad......
  • nginx反向代理jumpserver
    背景之前的文章介绍了,如何使用docker部署jumpserver当需要配置成https的时候,会发现很不好调整那么就出现了一种新的场景,那就是,后端服务不能动,如何在原来的基础上实现https的方式访问思路通过nginx反向代理给后端实现jumpserver的web服务地址是10.0.0.12:8888生成证书这......