精华内容
下载资源
问答
  • 使用nginx做反向代理基本配置方式

    万次阅读 2019-04-28 10:59:12
    在使用nginx做反向代理的时候,有三种常用的方案(第一种是常见的一种,而第二和第三种方案则有共同性): 方法一:只替换域名(即使用用户要访问的域名替换掉服务器的IP加端口) 例:访问test....

    在项目开发结束进行部署实施的时候我们往往需要进行服务的转发,这时就需要使用到nginx进行反向代理了。

    在使用nginx做反向代理的时候,有三种常用的方案(第一种是常见的一种,而第二和第三种方案则有共同性):

    方法一:只替换域名(即使用用户要访问的域名替换掉服务器的IP加端口)

    例:访问test.com/info/csdn.html 转发到 localhost:8080/info.html

    upstream domain {
      server localhost:8080 weight=5;
    }
    
    server {
        listen              80;
        server_name         test.com;
        access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;
    
        location / {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://domain;
        }
    
    }

     

    一个项目有时候是有很多个服务组成,这时候我们就需要根据url前缀转发到不同的服务

    例:

    test.com/prod/profile.html转发到 用户服务localhost:8081/profile.html

    test.com/user/details.html转发到 订单服务 localhost:8082/details.html

    方法二:带前缀访问

    即,url的前缀对下游的服务是不需要的,除非下游服务添加context-path, 但很多时候我们并不喜欢加这个。如果Nginx转发的时候,把这个前缀去掉就好了。

    upstream prod {
      server localhost:8081 weight=5;
    }
    upstream user {
      server localhost:8082 weight=5;
    }
    
    server {
        listen              80;
        server_name         test.com;
        access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;
    
        location ^~/prod/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://prod/;
        }
    
        location ^~/user/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://user/;
        }
    
    }

    ^~/prod/表示匹配前缀是prod的请求,proxy_pass的结尾有/, 则会把/prod/*后面的路径直接拼接到后面,即移除user 

    方法三:rewrite重写URL

    upstream prod {
      server localhost:8081 weight=5;
    }
    upstream user {
      server localhost:8082 weight=5;
    }
    
    
    server {
        listen              80;
        server_name         test.com;
        access_log  "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G"  main;
    
        location ^~/prod/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
    
            rewrite ^/prod/(.*)$ /$1 break;
            proxy_pass http://prod;
        }
    
        location ^~/user/ {
            proxy_set_header Host $host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
    
            rewrite ^/user/(.*)$ /$1 break;
            proxy_pass http://user;
        }
    
    }

    注意方法三proxy_pass结尾没有/, rewrite重写了url。

    总结:以上的三种方法是根据不同的需求场景来进行配置的,第一种需求使用方法一可解决,,第二种需求的话则有方法二和方法三两种解决方案

    展开全文
  • apache通过http做反向代理

    千次阅读 2019-04-04 00:34:57
    以前一直使用ajp端口做反向代理,今夜转移几个项目到新服务器,由于各种原因,域名暂时没法解析,新服务器貌似只开放了80端口,差点就凉凉了,后来仔细一想,nginx一直都是用http做反向代理,apache肯定也行,哈哈!...

    以前一直使用ajp端口做反向代理,今夜转移几个项目到新服务器,由于各种原因,域名暂时没法解析,新服务器貌似只开放了80端口,差点就凉凉了,后来仔细一想,nginx一直都是用http做反向代理,apache肯定也行,哈哈!!!

    apache配置:

    <VirtualHost *:80>
        ServerName www.webtest.com66.cn
        #DocumentRoot "E:\project\webtest"
        #地址最后的斜杠 / 不能少!!!
        ProxyPass / http://101.37.244.135:80/webtest/
        ProxyPassReverse / http://101.37.244.135:80/webtest/
        #ProxyPreserveHost on
    </VirtualHost>

     

    tomcat配置:

          <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
    		<Context path="/testweb" docBase="D:\project\testweb" degug="0" reloadable="false" crossContext="true"/>
    		<Context path="/yilabao" docBase="D:\project\yilabao" degug="0" reloadable="false" crossContext="true"/>
    		<Context path="/helloweb" docBase="D:\project\helloweb" degug="0" reloadable="false" crossContext="true"/>
    	  </Host>

     20190529:静态资源不走代理,静态资源404,检查httpd.conf,是否禁用了静态资源代理:

     

    展开全文
  • 使用nginx在指定端口做反向代理

    千次阅读 2020-09-27 10:09:49
    使用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做反向代理,请求接口

    千次阅读 2019-06-13 09:24:04
    nginx做反向代理 跨域会造成携带的cookie消失,所以本地一个本地转发 例如:请求 http://106.12.88.99:9999(示例) 线上接口,我们改为本地locahost请求, 首先下载nginx,解压后打开nginx.conf文件,编辑 1、...

    nginx做反向代理

    跨域会造成携带的cookie消失,所以本地做一个本地转发
    例如:请求 http://106.12.88.99:9999(示例) 线上接口,我们改为本地locahost请求,
    首先下载nginx,解压后打开nginx.conf文件,编辑
    在nginx.conf这里插入图片描述

    1、定义xxxx重定义访问地址(如下图)

    在这里插入图片描述
    再封装ajax中设置请求地址(xxxx是重点)在这里插入图片描述
    然后正常请求就可以了
    在这里插入图片描述

    重点:一定记得把项目放到nginx的html中,然后再启动你分享,浏览器地址栏输入localhost+你的地址
    第一次应朋友要求写博客,请见谅

    展开全文
  • ngnix做反向代理时文件上传问题

    千次阅读 2017-05-05 09:10:36
    用ngnix做反向代理时上传大于2M的文件时无法上传时,查看反向代理配置ngnix.conf,找到对应的域名块,在location下添加client_max_body_size 限制大小(单位M);location / { ..... client_max_body_size 1000M; ...
  • 使用Nginx做反向代理超时的问题

    千次阅读 2019-06-18 00:00:39
    使用Nginx做反向代理时,当被代理服务器没有在指定时间内创建连接、接受请求或返回响应时,Nginx就会断开连接,并返回给客户端“504 Gateway Time-out”错误。 关于Nginx做反向代理超时,可以通过proxy_connect_...
  • 通常,我们使用Nginx为后端WEB服务做反向代理或负载均衡,但如果我们的后端服务,并不是HTTP/HTTPS协议,而是TCP协议或WebSocket协议呢 最近遇到一个需求,我们的HTTPS以及MQTT服务端在海外云主机上,从大陆直连延时...
  • apache做反向代理服务器

    千次阅读 2014-07-07 13:32:19
    apache做反向代理服务器 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时...
  • nginx做反向代理处理http请求的过程

    千次阅读 2018-11-15 11:27:54
    nginx做反向代理处理http请求的过程
  • 使用nginx(https)为tomcat(http)做反向代理 公司使用tomcat部署了一套服务,需要通过互联网对外提供服务。鉴于安全考虑,公司要求使用https对外提供服务,在配置nginx反向代理时,通过http为tomcat做反向代理时...
  • 用Nginx做反向代理并缓存静态文件

    千次阅读 2018-11-10 01:32:45
    用Nginx做反向代理并缓存静态文件
  • 用nginx docker 做反向代理出现502 Bad Gateway 主机上有个nodejs应用:http://127.0.0.1:8888,外网不能直接访问端口8888,只能访问80端口,想通过nginx做反向代理来访问nodejs应用 。 具体步骤如下: 启动nginx ...
  • 目录ngrok来做反向代理介绍使用 ngrok来做反向代理 介绍 ngrok是做反向代理的神器,之前用的花生壳,但其速度属实有点慢。现在自己买了服务器,可以尝试下ngrok自己搭建代理,其实我在写GitHub的很多开源项目中看到...
  • Nginx中配置https做反向代理 - 知识林

    万次阅读 2017-01-22 00:51:22
    本文章来自【知识林】在Centos中的Nginx配置https做反向代理跟配置http做反向代理基本一样,只是多了ssl的相关配置,如果不知道如何在Centos中配置Nginx做反向代理可以参考文章《Centos 中安装与配置Nginx - 知识林...
  • IIS做反向代理,详细步骤和解析!

    万次阅读 2017-02-17 10:23:54
    一直说在IIS上做反向代理,由于沉迷在nginx一行指令完事的美好情景当中,所以IIS懒得折腾,今天终于下定决心在IIS上折腾一下反向代理,经过一晚上的捣鼓,终于搞定!搞定以后发现其实太简单了有木有!!(网上教程很...
  • chrome+myentunnel 利用ssh做反向代理

    千次阅读 2014-04-18 17:37:38
    chrome+myentunnel 利用ssh做反向代理
  • 最近想尝试将tinyhttpd代码加以修改,将其当成一个反向代理,后端Server是Apache,但是目前遇到了一个问题就是,反向代理不支持post请求,但是单独给Apache发送post请求可以成功,通过反向代理给Apache发送post请求...
  • nginx 做反向代理后如何处理 获取不到 到真实 IP 代理的配置中添加了一个自定义 header X-Real-IP,所以你可以在目标服务器中通过 X-Real-IP 这个 header 取到用户的真实 IP。 或者也可以通过取 X-Forwarded-For,...
  • nginx做反向代理时出现302错误

    千次阅读 2014-03-26 12:09:34
    现象:nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误原因:proxy.conf文件中定义的proxy_set_header Host $host;意思是nginx接收到浏览器请求后修改请求头中的host信息,然后再把请求转发给后端真实...
  • nginx替mongodb做反向代理的坑

    万次阅读 2019-09-03 21:37:18
    mongodb需要tcp 而nginx提供了http 所以会出错 需要在nginx.conf中增加如下配置 stream { server { listen <your incoming Mongo TCP port>; proxy_connect_timeout 1s; proxy_timeout 3s;... pr...
  • 利用nginx的upstream做反向代理解决内网域名转发的问题
  • linux用ssh做反向代理

    千次阅读 2018-02-20 13:30:23
     如上图,客户端C无法直接访问到服务器A,那么我们先在局域网内访问服务器A,在服务器A上建立与服务器B的反向代理通道。此时,客户端C可通过访问服务器B,再经由服务器B这个代理,访问到服务器 ...
  • 用Fiddler做反向代理

    千次阅读 2019-05-14 18:07:39
    关于反向代理是怎么一回事请读者自行了解,本文不赘述,简单理解就是让真实提供服务的网站躲在代理服务的背后,请求首先是到代理,再由代理转发给背后的网站,再把网站的响应返回出去。基于这个原理,作为代理的...
  • SSH做反向代理

    万次阅读 2012-01-10 11:06:07
    说实话,我对反向代理这个概念并不熟悉,只是感觉以下要的事是一个代理的逆向过程,故借此名词一用。   问题场景是这样的:我有两套Linux集群的访问权限,分别为A和B,它们互相独立。其中A、B集群均能访问外网...
  • Nginxtcp反向代理时,客户端一直掉线,我用的Nginx版本为:1.12.1,下面是Nginx配置 ``` stream { tcp_nodelay on; server { listen 1011 so_keepalive=on; proxy_connect_timeout 2s; proxy_timeout 1m; ...
  • windows上用apache做反向代理

    千次阅读 2017-10-26 16:08:24
    如果有nginx环境,那是很简单的,但是如果没有nginx环境,只有apache环境的话,也可以通过设置一个反向代理服务器,来实现需求。环境 win7 xampp(含apache服务) nodejs(启动一个运行在本地8360端口的服务) 操作...
  • 用 nodejs 做反向代理服务器

    万次阅读 2014-07-15 21:41:32
    因为商业 WWW 网站的话,往往只能占用 80 端口,——当然,如果只是服务的话,如接口服务之类的,使用了其他端口就不会与 80 端口冲突。因此,许多开发者都会面临到 80 端口这个问题,并且实际情
  • 最近在使用nginx 做反向代理时发现,最终返回的页面存在数据丢失的问题,最终发现问题所在 部分配置如下: server {  listen 10090;  server_name localhost;  client_max_body_size 100M; proxy_buffer_...
  • Nginx解析location/后面的字符串,配置不同的字符串匹配不同的URL进行反向代理。 2.nginx.conf配置文件 worker_processes 1; events { worker_connections 1024; } http { include mime.types; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 166,416
精华内容 66,566
关键字:

如何做反向代理