Nginx - 代理后端通过域名访问
目录
- 前言
- Nginx 根据域名反向代理
- Nginx proxy_pass 关于 '/' 的作用
1. 前言
接到一个需求,通过nginx 代理互联网上某一个页面,刚开始的时候觉得很简单的,直接 proxy_pass 过去就完事了,测试了下还是想太多。具体记录如下。
2. Nginx 根据域名反向代理
web服务器通常有三种访问方式:
- 基于ip
- 基于域名
- 基于端口
而互联网上暴露的网站多数都是通过 基于域名 的方式,如果直接通过解析后的IP访问,可能就无法访问到网站信息。我这里模拟了下这种方式,如下:
对应关系:
浏览器访问域名:
浏览器访问ip地址:
现在问题来了,当你的 nginx 配置 proxy_pass 的时候,得到的是 域名返回的结果 还是 ip地址返回的结果呢?这两种返回的结果完全不同。
在另一台主机 [ 192.168.118.14 ] 上安装 nginx 并配置好
配置nginx 方向代理
通过浏览器访问 192.168.118.14
查看日志信息:
192.168.118.41 - - [23/Jul/2019:20:09:12 +0800] "GET / HTTP/1.1" 200 15 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-" "upstream_addr":"112.2.3.66:80"
结合上面的反馈, 可以得到,当 nginx 反向代理域名,会根据启动时候解析出来的ip,加载到内存中,后面不会改变可以绑定hosts或者指定resolve服务器来固定ip
如果在使用 nginx 做反向代理的时候遇到以上相同的情况,解决办法是 设置一个 proxy_set_header
proxy_set_header Host "[domain]";
配置完成,nginx -s reload 浏览器访问:
现在就得到想要的页面了。
3. Nginx proxy_pass 关于 '/' 的作用
有这样一个服务器访问如下:
访问 http://192.168.118.15 得到
访问 http://192.168.118.15/a/
在这台主机前端需要添加一个反向代理。配置如下:
第一种配置:
当这样配置的时候,访问 http://192.168.118.14/a/ 结果如下:
总结:
proxy_pass http://192.168.118.14/a/ --> http://192.168.118.15/
第二种配置:
当这样配置的时候,访问 http://192.168.118.14/a/ 结果如下:
总结:
proxy_pass http://192.168.118.14/a --> http://192.168.118.15/
综上所述:
当 proxy_pass 不加 '/' 时, location uri 会追加到 proxy_pass http://domain/ 后面;
当 proxy_pass 加 '/' 时,不会在 proxy_pass http://domain 后面追加任何uri
切记以上两条规则。
Nginx - 代理后端通过域名访问的更多相关文章
- CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解
CAS (5) -- Nginx代理模式下浏览器访问CAS服务器配置详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1.9.8 ...
- nginx 禁止未绑定的域名访问
nginx 禁止未绑定的域名访问 方法1: server { listen 80 default_server; #不指定 server_name, server_name 默认为"&quo ...
- CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解
CAS (6) -- Nginx代理模式下浏览器访问CAS服务器网络顺序图详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1. ...
- Nginx (安装+ 配置域名+ 访问认证 +发布文件)
一.Nginx介绍: Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll(linux2.6内核).kqueue(freebsd).eventport(solaris10)作为网 ...
- 医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网
首先介绍下主要需求,很简单,就是要在医院his系统内嵌公司的平台,实现内网直接访问外网 这是院方给我提供的网闸相关配置,105是医院内网的服务器,120是外网的服务器,中间通过网闸配置的几个端口实现互 ...
- Nginx安装、多域名访问
nginx web服务 apache iis django web框架 lvs 负载均衡 章文嵩博士 vue 尤雨溪 Tengine F5 硬件负载 A10 安装 ``` wget http://ng ...
- IIS反向代理实现Revel域名访问
Revel实现域名访问 1.在cmd中启动revel项目,我设置的端口为8000 2.下载IIS的Application Request Routing Cache组件下载地址 3.安装ARR 4.打 ...
- 通过nginx实现多个域名访问同一个服务器
一台服务器通过nginx配置多个域名(80端口) 参考:https://www.cnblogs.com/ruanjianlaowang/p/11182486.html 1. 问题描述 多个域名对应一 ...
- java 解决nginx代理的跨域访问问题
一.什么是跨域 跨域是浏览器对JavaScript同源策略的限制 二.什么情况下会产生跨域 域名不同 wwww.baidu.com www.jd.com 域名相同,访问的端口不同 wwww.baidu ...
随机推荐
- UVA1537 Picnic Planning(思维+最小生成树)
将1号点从图中去掉过后,图会形成几个连通块,那么我们首先可以在这些连通块内部求最小生成树. 假设有\(tot\)个连通块,那么我们会从1号点至少选\(tot\)个出边,使得图连通.这时我们贪心地选择最 ...
- springboot,eclipse打包出错处理
打jar包报错 [WARNING] The POM for org.apache.maven.plugins:maven-clean-plugin:jar:3.1.0 is invalid, tran ...
- HDU - 3311: Dig The Wells (斯坦纳树)
题意:给你n个寺庙,m个村庄,p条路,现在你要在这n+m个位置中选出若干个位置打井,每个位置打井的费用会告诉你,同时p条路也有修建费用,现在每个寺庙都住着一个和尚,问你最小的费用让这n个和尚都能喝上水 ...
- 51Node1228序列求和 ——自然数幂和模板&&伯努利数
伯努利数法 伯努利数原本就是处理等幂和的问题,可以推出 $$ \sum_{i=1}^{n}i^k={1\over{k+1}}\sum_{i=1}^{k+1}C_{k+1}^i*B_{k+1-i}*(n ...
- 六.深浅copy
先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单词音译过来的,那什么是copy? copy其实就是复制一份,也就是所谓的抄一份.深浅copy其实就是完全复制一份,和部分复制一份的意 ...
- 非旋转 treap
其实之前学过一次非旋转 treap,但是全忘光了,今天复习一下. 洛谷 P3369 [模板]普通平衡树 code: #include <bits/stdc++.h> #define N 1 ...
- .NET添加新项目-配置不同环境参数
添加新项目-配置不同环境参数 添加新项目后,需要对配置管理器进行设置.默认新加的项目只有debug和release 现加其他环境(dev.uat...)的配置[通过项目文件.csproj来加,拷贝其他 ...
- P1913 L国的战斗之伞兵
题目链接 P1913 L国的战斗之伞兵 思路 从无风点倒着dfs,本来是道大水题,结果输入的时候第二层循环打错了!手残打成i++ 代码 #include<iostream> #includ ...
- 解决IE报错:Locale 'chinese' is not well-formed,或RangeError: 区域设置“chinese”的格式不正确的问题
接之前的此博客问题处理:js处理时间时区问题 由于 toLocaleString():据本地时间格式,把 Date 对象转换为字符串.总是会带有上午/下午,所以我加了参数:new Date('2019 ...
- struct iphdr
struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:, version:; #elif defined (__BIG_ENDIA ...