前几天一直在被一个问题困扰,机器上跑的站点太多了,Apache上面有十几个,NodeJS的也有一堆,记端口号都要烦死,于是萌生了使用反向代理的想法。出发点貌似太low了,完全不是出于负载均衡、高并发什么的考虑,就是为了不记端口号

最开始是使用Apache做的,因为使用的Mac安装mod_proxy及繁杂的配置搞得要死,关键是还失败了。。。(失败原因另说),江湖传言nginx做反向代理配置简单,尝试了一下nginx,果不其然

工作原理

刚入行的小伙伴可能会问什么事反向代理?为什么使用反向代理就不用急端口号了?

正向代理

了解反向代理之前先了解一下正向代理,正向代理就是我们平时理解的代理,举个例子

  1. 在国内我不能访问caoliu
  2. 但是我有一台在美国的VPS,可以访问各种xxoo网站
  3. 于是我向VPS发请求,我要看caoliu
  4. VPS获取caoliu内容,然后返回给我

VPS就是代理,这个过程就是正向代理

正向代理 是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理

反向代理

还是举个例子,caoliu的域名经常会变,而且会提供多个域名,一个域名被墙掉了,可以用其它的,但是访问每个域名返回的内容都是一样的,而且页面也没有重定向

其实我们访问xx.xxx.cl的时候,该域名的web服务器没有向我们直接返回内容,而是自己向caoliu的真正主机发送请求,然后把请求结果给我们

反向代理对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容 原本就是它自己的一样

区别&用途

其实明白了原理两者的区别很明显了,可以简单的这样区分正向代理和反向代理

反向代理对访问者时透明的(你觉得xx.xxx.cl就是caoliu的服务器地址了,实际不是,你看不出来),正向代理访问着需要特殊设置(不然怎么看youtube)

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

看到这里是不是明白了我想怎么做?

原来我有三个网站

  1. localhost:8080
  2. localhost:9000
  3. localhost:8000

我要使用nginx做个设置,都使用80端口,免去我输入端口号的苦恼

  1. 当我访问 xxx的时候给我代理到localhost:8080
  2. 当我访问 yyy的时候给我代理到localhost:9000
  3. 当我访问 zzz的时候给我代理到localhost:8000

Apache配置各个站点

修改httpd.conf

Mac 下Apache的配置文件在

/etc/apache2/httpd.conf

我们设置三个虚拟主机,修改配置文件,去掉加载虚拟主机配置的注释#

Include /private/etc/apache2/extra/httpd-vhosts.conf

监听对应的端口(不要监听80了,一会儿交给nginx)

Listen 8000
Listen 8080
Listen 9000

修改httpd-vhosts.conf

虚拟主机的配置文件在

/etc/apache2/extra/httpd-vhosts.conf

添加虚拟主机节点,类似这样来三个

 <VirtualHost *:8080>
DocumentRoot "/path"
ServerName xxx
<Directory "/path">
Options Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>

修改hosts文件

如果服务器在本地,我们还需要把域名配置到localhost,Mac下hosts的配置文件在

/etc/hosts

简单添加一下我们的三个主机

localhost xxx yyy zzz

修改nginx配置文件

Mac下使用homebrew安装的nginx配置文件在

/usr/local/etc/nginx/nginx.conf

然后添加Server节点

server {
listen 80;
server_name xxx;
location /{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
}

proxy_set_header Host $host可以使url始终保持配置的xxx等

这样重启nginx、Apache后在浏览器上输入xxx/就可以直接代理到http://127.0.0.1:8080了,不用端口号了

前nginx后Apache+Node反向代理的更多相关文章

  1. nginx与apache配合反向代理技术1

    序:最近在看Dimitri Aivaliotis的<Mastering Nginx>,刚好跆拳道课下班在路上看了反向代理服务器,准备在自己的博客VPS尝试一下 web代理服务器可以实现分布 ...

  2. nginx与apache配合反向代理技术2

    注意,上次我们只是简单的在同一台服务器模拟搭建了一个新的http服务器(启用了8080端口),使用的是apache,从而模拟了多台服务器实现的Nginx反向代理,通过Nginx向上游代理服务器发送请求 ...

  3. Nginx或Apache通过反向代理配置wss服务

    nginx配置参考 前提条件及准备工作: 1.假设ws服务监听的是8282端口(websocket协议) 2.已经申请了证书(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ ...

  4. 使用nginx和tomcat配置反向代理和动静分离

    背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术.使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat.但是一般很少会有人将Tomcat作为用 ...

  5. APACHE 与IIS同时存在的情况下,给APACHE添加反向代理 共用80端口

    一.首先打开IIS,将IIS的端口改成81,不要让IIS占用了80端口 二.打开APACHE的httpd.conf配置文件,将里面的端口配置成80 三.打开APACHE的虚拟目录配置文件,如:http ...

  6. apache做反向代理

    实验目的 通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理 环境准备 逻辑架构如下 前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和n ...

  7. Nginx插件之openresty反向代理和日志滚动配置案例

    Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...

  8. Apache 如何反向代理tomcat并且实现Session保持

    简介 LAMT=Linux+Apache+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下 ...

  9. Tomcat:利用Apache配置反向代理、负载均衡

    本篇主要介绍apache配置反向代理,介绍了两种情况:第一种是,只使用apache配置反向代理:第二种是,apache与应用服务器(tomcat)结合,配置反向代理,同时了配置了负载均衡. 准备工作 ...

随机推荐

  1. VS2013如何避开安装时IE10的限制

    [VS2013]如何避开VS2013必须要有IE10的限制 VS就会告诉我们目前环境不适合安装VS2013,必须升级IE版本到IE10. 在不安装IE10时的时候,安装办法: 将下面一段文字,储存为. ...

  2. 转:解决apache的the requested operation has failed

    运行->cmd 进入到apache的bin目录.输入httpd.exe -w -n "Apache" -k start 可查看原因

  3. Python学习日志(三)

    运算补充(因为之前看书看过的我又忘了...) python3 里 / 直接是浮点除.python2的 / 是直接整除,取整数部分,小数不要了,python3也可以这样整除,用//实现. **是乘方!! ...

  4. iOS之转场动画

    CodeApp地址CATransition_Demo:https://github.com/Wheat-Qin/CATransition_Demo iOS中比较全的翻转过渡动画(不只是苹果提供的).包 ...

  5. 《程序员的自我修养》读书笔记 - dllimport

    Math.c  { __declspec (dllexport)  double Add (xx, xx) {...}} MathApp.c  { __declspec(dllimport) doub ...

  6. mysql开启远程访问权限

    1. //登录数据库 mysql -u root -pvmwaremysql>use mysql; //%为所有ip都可以远程访问 mysql>update user set host = ...

  7. @WebServlet用注解来实现servlet和url的映射

    package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Se ...

  8. T-SQL Recipes之Database Backups

    The Problem 在DBA和T-SQL码奴日常工作中,比如常规检查,服务管理,数据库管理, 是其中最具挑战性的一个领域. 在相似任务中,比如索引碎片管理,统计管理,数据库备份是异常重要的,对任何 ...

  9. 【DFS】POJ 1321

    POJ 1321 棋盘问题 题意:中文题不解释. 思路:经典DP,比较取巧的想法是一行行(按照题目意思一行最多只能放一个)来看,标记一列列.注意考虑到有些行可能不放的情况. /** Sample In ...

  10. 51nod算法马拉松15

    智力彻底没有了...看来再也拿不到奖金了QAQ... A B君的游戏 因为数据是9B1L,所以我们可以hash试一下数据... #include<cstdio> #include<c ...