使用nginx做反向代理

  • 什么是代理、正向代理、反向代理?
    • 代理
    • 正向代理
    • 反向代理
  • nginx最基本的组成部分
    • 下载
    • 配置文件
    • 基础页面
    • nginx.exe
    • 基本指令
  • nginx反向代理
    • 官方文档的改写
    • 反向代理到其他网站
      • 只监听端口
      • 单一端口多类处理

什么是代理、正向代理、反向代理?

代理

所谓代理其实就是通俗意义上的“将一件事情交给另一个人去做”,因为网络通信其实是蛮复杂的一个过程,所以单纯依靠客户自己去与服务器直接做所有通信过程肯定会让人崩溃!!

正向代理

正向代理就是指代理客户端,意思就是说客户端向代理说明自己的请求,之后代理服务器会根据客户端的需求去和真正的目标服务器通信,把目标服务器返回的数据传给客户端。代理可以是虚拟的IP,所以比如说本机IP和目标IP本身并没有接入在同一个网络,借助虚拟的代理IP就相当于“我们接入在目标服务器的那个网络”,此时,我们的机子对外相当于隐藏了真实的本机地址,也可以获得更低的延迟。典型的如VPN虚拟网络。

反向代理

反向代理的概念则恰恰相反,客户端不用告诉代理服务器想像哪一个目标服务器请求数据,而是直接把“我有一个请求”告诉代理服务器,代理服务器自己去找一个真实服务器请求/接收数据。这种情况下相当于隐藏了真实服务器的地址。当我们请求 www.baidu.com 的时候,背后可能有成千上万台服务器可以为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。
(nginx负载均衡部分转自https://blog.csdn.net/aqleung/article/details/80923470)

nginx最基本的组成部分

最基本,所以这里只讲一下调nginx一般要用到的指令、文件。

下载

如下图,随便找一个下载就得到压缩包,解压缩即可

配置文件

设置代理等,只需修改下图部分

基础页面

在启动nginx代理后,访问127.0.0.1默认打开的页面

nginx.exe

位置比较明显,就叫nginx.exe

基本指令

部分转自https://blog.csdn.net/ruoxiyun/article/details/86980913

nginx -s reopen #重启Nginx
nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx
nginx -s stop #强制停止Nginx服务
nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)

首先不是特别建议直接双击打开nginx,机制问题,因为windows上每双击一次nginx,就相当于执行了 start nginx命令,又启动了一次nginx,有时候双击一次就会同时开启多个nginx.exe,关也关不掉。

nginx反向代理

打开nginx.conf文件:

进程与连接数量设置不做过多描述,可以参考官方文档

官方文档的改写

直接访问127.0.0.1,可以得到官方界面:

可以修改监听端口,使得可以通过指定端口访问本机的index.html
在这里,我重新写了一个index.html,打开的效果如下:


注意!上图是我指定8000端口访问index.html,事实上直接访问127.0.0.1还是官方文档,也就是说nginx默认监听http协议的80端口。如果非要和index挂钩只需要重写对80端口的监听即可

反向代理到其他网站

我们可以自己新建一个server,通过监听其他端口反向代理服务器,一旦用户“访问”这个端口,nginx就会反向代理把网页信息传给我们。

只监听端口

如下图,令nginx监听8888端口,随便给一个server_name,写一个location。location的意思就是说我们要向哪个服务器做反向代理。
每次完成修改后,记得在命令行输入nginx -s reload重新加载一次配置文件!

这里举个百度的例子。

另外就是写法问题。location / {}这种写法就是默认的,也就是说我可以直接在浏览器地址栏输入127.0.0.1:8888发请求,nginx就会监听到并只给我们做百度的反向代理。
如果说像上图那样是location /baidu.com {}的写法,则需要输入整个127.0.0.1:8888/baidu.com,否则nginx在只监听到127.0.0.1:8888请求后会只自动帮我们打开index.html

如果想做骚操作,用什么127.0.0.1:8888/weibo.com访问百度也当然是可以的,配置文件只算是告诉nginx解析规则而已。

单一端口多类处理

我们可以看一下使用HTTP的URL的一般形式:
http://<主机>:<端口>/<路径>?<参数>#<片段>

既然说location / 后面加上路径就可以指定去访问某个网站,那么单个端口多个location也并非不可以。

此时输入127.0.0.1:8888/baidu.com就是访问百度,
输入127.0.0.1:8888/weibo.com就是访问微博了。

使用nginx在指定端口做反向代理相关推荐

  1. 使用nginx为ArcGIS Server做反向代理

    1.下载nginx软件:官网地址http://nginx.org/ 2.修改conf文件夹下nginx.conf配置信息, 配置文件中以下内容: server { listen       80; s ...

  2. nginx做反向代理时出现302错误

    现象:nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 详细现象如下: 浏览器请求登录页: 输入账号密码点击登录: 很明显登录后跳转的地址少了端口号. 原因:proxy.conf文 ...

  3. 小程序nginx做反向代理_NGINX作为节点或Angular应用程序的反向代理

    小程序nginx做反向代理 A reverse proxy is a server that retrieves resources for clients from one or more upst ...

  4. nginx做反向代理和后端web服务器之间的交互

    1.Nginx是什么? Nginx就是反向代理服务器. 首先我们先来看看什么是代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端.比如Go ...

  5. 使用Nginx为TCP/WebSocket协议做反向代理和几个易踩的坑

    通常,我们使用Nginx为后端WEB服务做反向代理或负载均衡,但如果我们的后端服务,并不是HTTP/HTTPS协议,而是TCP协议或WebSocket协议呢 最近遇到一个需求,我们的HTTPS以及MQ ...

  6. 利用 Nginx 做反向代理解决微信小程序业务域名限制问题

    [查看原文] https://fyh.me/2018/07/12/nginx-docker-miniprogram/ 最近做了一个世界杯比赛日程的小程序,只有查看日程的功能,所以很快就发布上线了.后边 ...

  7. Docker视频教程 之 使用Nginx容器做反向代理 - 知识林

    要观看视频教程请点击这里转到[知识林]观看 这一节主要讲解如何在docker中使用Nginx做反向代理 在启动docker容器时挂载宿主机目录 这讲将会挂载两个目录,一个用于查看nginx的日志,另一 ...

  8. Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理

    转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...

  9. Nginx(二):反向代理原理 与 配置文件详解

    相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...

最新文章

  1. ICCV 2021 | 腾讯、华中科大提出QueryInst,开启基于Query的实例分割新思路
  2. [MySQL] 事务的ACID特性
  3. 【持续更新】设计技巧++
  4. 删除 java代码中所有的注释
  5. Math.random()取随机数一直为0
  6. Android中的EditText默认时不弹出软键盘的方法
  7. PE文件格式详解(下)
  8. python实现多个excel文件两种方式合并:多表单形式合并、单表单(增加标识列来区分不同文件)形式合并
  9. setup_per_cpu_areas 函数
  10. 锐捷交换机堆叠配置举例
  11. iPhone不配Lightning to 3.5mm转换线:试试这几款蓝牙接收器
  12. 【Multisim仿真】74LS193+74LS138流水灯
  13. Google云游戏平台Stadia好不好玩?第一波实测火热出炉!
  14. C++ error LNK1169:找到一个或多个多重定义的符号 解决
  15. STM32开发实例 基于STM32单片机的智能快递系统
  16. [转载] 晓说——第25期:看美国系列之“两极分化的黑人”
  17. 【java工具方法】十六进制字符串转字符串
  18. opencv——角点检测
  19. linux shell中\w \s \d \b ^ $等常用匹配用法
  20. 安装STM32CubeMX,stm32串口通信

热门文章

  1. xshell 连接报错 Disconnected from remote host
  2. 腾讯微信面试题:侧重科班基础
  3. 饥荒如何修改服务器人数上限,饥荒联机版房间人数上限可以修改吗?怎么更改房间人数?...
  4. windows商店直接安装ubuntu子系统
  5. URP SMAA 细品
  6. 计算机设计辅助 CAD 试题汇编,计算机辅助设计试题汇编-第二单元
  7. java实训心得感想30字,java实训心得体会感想
  8. html5 发送邮件,【JS】使用 Emailjs 发送邮件
  9. 软件 耗电 android OS 系统,六款安卓平台浏览器耗电量实测
  10. 使用rimraf一秒删除node_modules文件夹【亲测有用】