{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

nginx反向代理如何配置?

alanoddsoffalanoddsoff 回答4 收藏1
问题描述:有一个应用A运行在8546端口上,我想通过域名/二级目录这样的方式访问这个应用A。应该如何配置nginx? 最好能给出个例子。
收藏问题

4条回答

v1

v1

回答于2022-06-23 13:21

1.nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。目前最新的版本是1.17.1,最新的稳定版本是1.16.0。目前很多很多平台都有使用到,像淘宝天猫等,淘宝网还在nginx的基础上弄了一个分支Tengine,它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

2.反代配置

通过域名/二级目录这样的方式访问这个应用A的8546端口,假如域名为

a.example.com

,A应用监听localhost:8546

2.1通过域名

通过域名配置只需要配置server_name a.example.com

即可,配置示例如下:

这样配置就可以通过域名

a.example.com

访问8546应用了。

2.2通过二级目录访问

通过二级目录访问需要注意的是,配置二级目录要注意proxy_cookie_path,以前踩过很多坑。假设要访问的二级目录为

a.example.com/test/,配置示例如下:



这样就可以通过http://a.example.com/test/

访问了。

注:示例配置都只写了server部分,将servern放在http里面即可,完整示例:

评论0 赞同0
  •  加载中...
mrli2016

mrli2016

回答于2022-06-23 13:21

在介绍 Nginx 如何做反向代理之前,我先给大家讲讲什么是反向代理。


01 正向代理 VS 反向代理

正向代理:需要我们知道被代理服务器的 IP 或者域名,即将配置到代理服务器上,然后我们通过访问代理服务器,最终访问到目标服务器。

反向代理:我们只需要知道代理服务器的 IP 就可以了,代理服务器根据请求进行跳转并返回内容,至于最终是哪台服务器做的处理,我们并不知道。


02 举个例子

正向代理:我住在北京,但是想回老家买套房,但是我没办法亲自回老家考察,于是我就派我的管家回老家考察;管家就是正向代理服务器;正向代理服务器代表了客户端,在正向代理的过程中,服务端只和代理服务器打交道(房东只和我的管家谈),并不知道真正的客户端是谁。

反向代理:我住在北京,但是想回老家买套房,但是我没办法亲自回老家考察,于是我打个电话联系了老家的房屋中介去办这件事儿;房屋中介就是反向代理;这里的反向代理,代表的是房东,在反向代理的过程中,客户端只和反向代理服务器打交道,并不知道真正的服务端是谁。

总之,正向代理和客户端是一伙儿的,隐藏了客户端,反向代理和服务端是一伙儿的,隐藏了服务端。


03. 使用 Nginx 实现反向代理

Nginx 就是一个开源的、高性能的、可靠的 Http 中间件;它经常被用作 Http 代理、反向代理、负载均衡等等。

使用 Nginx 做反向代理也特别的简单,我们下载并安装好 Nginx 之后,只需要在其配置文件 nginx.conf 中配置代理的目标服务器的地址即可。


3.1 比如我们有三台应用服务器分别是:

10.130.0.1:8080

10.130.0.2:8080

10.130.0.3:8080


3.2 那么在配置文件中的 http 中增加 upstream,并配置三台环境的地址;

#增加 upstream 的配置,其中 myserver 是自己起的名字

upstream myserver{

server 10.130.0.1:8080; #有几套环境,就配置几条

server 10.130.0.2:8080;

server 10.130.0.3:8080;

}


3.3 并在 http.server.location 中增加 proxy_pass 的配置;

location / {

root html;

index index.html index.htm;

proxy_pass http://myserver; #增加,其中 http://myserver 的 myserver 要和上文对应

}


经过这么几步简单的配置,我们就做好了一个反向代理服务器了,当客户端访问代理服务器 http://IP/xxx/xxx (接口地址)时,Nginx 就可以将我们的请求分别转发到 10.130.0.1、10.130.0.2、10.130.0.3 三台服务器上。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注;关注我后,可私信发送数字【1】,获取海量学习资料。

评论0 赞同0
  •  加载中...
Jeff

Jeff

回答于2022-06-23 13:21

域名方式

场景描述:

通过域名方式访问应用A的8546端口。

解决方案:

使用nginx反向代理,配置如下:

upstream backend{

ip_hash;

server backend.example.com:8546;

}

server {

listen 80;

server_name localhost nginx_domain;
   location / {
   proxy_pass http://backend;

proxy_redirect off;
}

}

访问路径:http://nginx_domain

二级目录方式

场景描述:

通过二级目录的方式访问应用A的8546端口。

解决方案:

使用nginx反向代理,配置如下:

upstream backend{

ip_hash;

server backend.example.com:8546;

}

server {

listen 80;

server_name localhost nginx_ip;
   #其他路径默认访问

location / {
   root /nginx/www;
  index index.php index.html index.htm;
}

#通过访问service二级目录访问

location ^~ /service{
proxy_pass http://backend/service;
proxy_redirect off;
proxy_set_header Host $host;
}

}

访问路径:http://nginx_ip/service


如果解决了你的疑惑,请点点关注和评论,谢谢大家支持。

正春华枝俏,待秋实果茂,与君共勉。


评论0 赞同0
  •  加载中...
FreeZinG

FreeZinG

回答于2022-06-23 13:21

一 概述

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

二 反向代理服务器的工作原理

反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

1,作内容服务器的替身

如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<