nginx反向代理如何配置?

有一个应用A运行在8546端口上,我想通过域名/二级目录这样的方式访问这个应用A。应该如何配置nginx?

最好能给出个例子。

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里面即可,完整示例:

域名方式

场景描述:

通过域名方式访问应用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


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

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


一 概述

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

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

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

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

1,作内容服务器的替身

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

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

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

2021-11-11

2021-11-11