搭建Nginx 反向代理服务器

一、什么是反向代理:

反向代理(Reverse Proxy)是指把Nginx服务器放在互联网接口,负责接收处理用户客户端的请求,然后把请求发往后端的Web server上,返回给用户的数据也要先经过Nginx服务器在发给用户,Nginx可以实现负载均衡和缓存的功能,从而减轻服务器的访问压力。

二、示例图:

三、Nginx服务器配置:

编译安装:

1、tar xvf nginx-1.4.7.tar.gz

2、cd nginx-1.4.7

3../configure   --prefix=/usr   --sbin-path=/usr/sbin/nginx   --conf-path=/etc/nginx/nginx.conf   --error-log-path=/var/log/nginx/error.log   --http-log-path=/var/log/nginx/access.log   --pid-path=/var/run/nginx/nginx.pid    --lock-path=/var/lock/nginx.lock   --user=nginx   --group=nginx   --with-http_ssl_module   --with-http_flv_module   --with-http_stub_status_module   --with-http_gzip_static_module   --http-client-body-temp-path=/var/tmp/nginx/client/   --http-proxy-temp-path=/var/tmp/nginx/proxy/   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   --http-scgi-temp-path=/var/tmp/nginx/scgi   --with-pcre

4、make && make install | tee /tmp/a.txt

5、vim /etc/rc.d/init.d/nginx

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig:   - 85 15

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /etc/nginx/nginx.conf

# config:      /etc/sysconfig/nginx

# pidfile:     /var/run/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`nginx -V 2>&1 | grep "configure arguments:" | sed ‘s/[^*]*--user=\([^ ]*\).*/\1/g‘ -`

options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`

for opt in $options; do

if [ `echo $opt | grep ‘.*-temp-path‘` ]; then

value=`echo $opt | cut -d "=" -f 2`

if [ ! -d "$value" ]; then

# echo "creating" $value

mkdir -p $value && chown -R $user $value

fi

fi

done

}

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

make_dirs

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

configtest || return $?

stop

sleep 1

start

}

reload() {

configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac

6、配置nginx没有高亮显示,添加高亮显示功能:

http://www.vim.org/scripts/script.php?script_id=1886  #下载脚本页面到/root/.vim/syntax/

[[email protected] nginx]# mkdir -pv .vim/syntax

[[email protected] nginx]# cd /root/.vim/syntax/

[[email protected] syntax]# ls

nginx.vim

[[email protected] syntax]# vim .vim/filetype.vim #添加如下信息,然后在打开nginx配置文件即可显示高亮:

au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/* if &ft == ‘‘ | setfiletype nginx | endif

7、配置Nginx服务器实现代理、缓存和负载均衡功能:

[[email protected] webcache]# grep -v "#" /etc/nginx/nginx.conf

worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  5;

upstream webservers {

server 192.168.10.205 weight=3 max_fails=3 fail_timeout=2s;

server 192.168.10.206 weight=1 max_fails=3 fail_timeout=2s;

}

proxy_cache_path /cahce/webcache levels=1:2 keys_zone=web:100m max_size=1g inactive=12h;

server {

listen       80;

server_name  www.a.com;

location / {

proxy_pass http://192.168.10.206;

proxy_cache web;

proxy_cache_valid 200 2h;

proxy_cache_valid 301 302 10m;

proxy_cache_valid any 1m;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

server {

listen 80;

server_name www.c.com;

add_header X-Via $server_addr;

add_header X-Cache $upstream_cache_status;

location  / {

proxy_pass http://192.168.10.205;

proxy_cache web;

proxy_cache_valid 200 2h;

proxy_cache_valid 301 302 10m;

proxy_cache_valid any 1m;

proxy_set_header X-Real-IP $remote_addr;

}

location  ~* \.(jpg|jpeg|png|gif)$  {

proxy_pass http://192.168.10.206;

proxy_cache web;

proxy_cache_valid 200 2h;

proxy_cache_valid 301 302 10m;

proxy_cache_valid any 1m;

}

}

8、在192.168.10.206和205服务器的/var/www/html目录存放一个1.jpg的图像和一个index.html

在Nginx服务器创建爱你缓存目录/cahce/webcache

mkdir -pv  /cahce/webcache

现在是把图片请求都转发给192.168.10.206,吧文本请求转发到192.168.10.205,并缓存到Nginx服务器,如下用客户端查看:

访问 之前需确保本地能解析访问的域名,如www.c.com要写入本地的hosts文件,请求可以正常访问:

9、访问图片测试:

第一次访问可以正常转发的192.168.10.206的后端服务器,但是第一次使用缓存,因为之前没有访问过此图片,所以Nginx服务器没有缓存此图片:

10、使用ctrl+F5强制刷新再次访问此图片:

可以看到已经使用缓存了

11、在Nginx服务器查看缓存目录:

已经将数据缓存到Nginx服务器,目录是在nginx.cof配置定义的两层16进制的目录,首层目录有0-F16个目录,二级目录有16x16=256的二级目录。

时间: 2024-10-14 08:54:53

搭建Nginx 反向代理服务器的相关文章

RHEL6.4 搭建Nginx反向代理服务器

实验需求:使用nginx搭建反向代理服务器,把用户的请求分发给后端的web服务器组192.168.100.1和192.168.100.2 内网web服务器192.168.100.1          内网接口eth0(192.168.1.254) ----------- nginx反向代理服务器------------ 公网客户端1.1.1.1 内网web服务器192.168.100.2           公网接口eth1(1.1.1.254) 一.部署内网的网站服务器192.168.100.

CentOS7下搭建nginx反向代理服务器使得外网可以二级域名访问内网应用

创建nginx的本地yum源 [[email protected] ~]# yum list |grep nginx No package nginx available. [[email protected] ~]# //给跪了,什么鬼,怎么没有nginx的rpm?算了,直接自己手动配一个官网repo吧 [[email protected] ~]# //访问nginx官网,进入dowload页面,翻到底部的Pre-Build Package,选stable version ----------

搭建nginx反向代理用做内网域名转发

基于域名的7层转发的实现(NAT+反向代理) 在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难.一一对应关系也没有规律.访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下: Public IP Public Port Number Internal IP Internal Port Number Note 1.1.1.1 80 192.168.1.10

搭建Nginx反向代理做内网域名转发

由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 80 端口.非 80 端口的映射在访问的时候要域名加上端口,比较麻烦. 我们可以在内网搭建一个Nginx反向代理服务器,将Nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到Nginx反向代理服务器,利用Nginx反向代理将不同域名的请求转发到内网不

centos7.4 搭建nginx反向缓存代理

nginx可以实现基于硬盘缓存的反向代理服务通过proxy_cache和fastcgi_cache两个功能模块完成配置 ----- 本例:nginx反向代理服务器192.168.80.81web服务器192.168.80.82win7客户机 192.168.80.79 -----### web服务器192.168.80.82 配置:安装简单的httpd,提供web服务即可 -----### nginx反向代理服务器192.168.80.81配置:1.上传反向代理插件.软件和解压:tar xzvf

在Linux系统下使用Docker以及Weave搭建Nginx反向代理

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且简单

如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且简单

简单聊聊不可或缺的Nginx反向代理服务器--实现负载均衡【上篇】

今天又是新的一周,我养足了精神去对待新一周的工作,但是今天到公司发现还是有一点空闲时间的,所以就想与之前接触过的Nginx再交往得更深一点儿. 什么是Nginx: Nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.官方测试nginx能够支撑5万并发链接,但是实际生产环境能到2-3万并发连接数(只是听说),并且cpu.内存等资源消耗缺非常低,运行非常稳定. Nginx在实际生产中的应用场景: 上面已经说了,Nginx是一款高性能的http服务器,所以

Nginx 反向代理服务器

一.------------------------------理论------------------------------ Nginx是什么? Nginx是反向代理服务器. 首先我们来看看什么是代理服务器,通常说的代理 服务器就是正向代理服务器,代理服务器一般是指客户端通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用于客户端. 一个完整的代理请求过程为:客户端首先与代理服务器创建连接,然后根据代理服务器所用的代理协议,请求对目标服务器创建连接.或者获得目标服务器的指定资源.We