Nginx 反向代理服务器

一、------------------------------理论------------------------------

Nginx是什么?

Nginx是反向代理服务器。

首先我们来看看什么是代理服务器,通常说的代理

服务器就是正向代理服务器,代理服务器一般是指客户端通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用于客户端。

一个完整的代理请求过程为:客户端首先与代理服务器创建连接,然后根据代理服务器所用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源。Web代理服务器是网络的中间实体。代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。

代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页,而是通过向代理服务器发送请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

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

反向代理服务器,在服务器端接收客户端的请求,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。

反向代理的实现

1、需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上

2、服务器返回自己的服务到负载均衡设备

3、负载均衡将服务器的服务返回用户

用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,解析得到的IP其实是负载均衡的IP,而不是服务器的IP,这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务。

两者区别

正向代理客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向哪个原始服务器转交请求,并将获得的内容返回给客户端。

正向代理代理的对象是客户端,反向代理代理的对象是服务端

Nginx反向代理

特点

1、跨平台:Nginx 可以Linix运行,而且也有Windows的移植版本。

2、配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置

3、非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)

4、事件驱动:通信机制采用epoll模型,支持更大的并发连接。

5、master/worker结构:一个master进程,生成一个或多个worker进程

6、内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)

7、成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币

8、内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。

9、节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓

存的 Header 头。

10、稳定性高:用于反向代理,宕机的概率微乎其微

Nginx是如何处理一个请求

首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址。

二、------------------------------实战------------------------------

Tengine+Lua+GraphiceMagick实现图片自动剪裁功能

源码的安装一般由3个步骤组成

配置     configure

编译     make

安装     make install

#安装PCRE库

cd /usr/local/src

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

tar -zxvf pcre-8.35.tar.gz

cd pcre-8.35

./configure

make && make install

#查看版本 pcre-config --version

#安装openssl

cd /usr/local/src

wget http://www.openssl.org/source/openssl-1.0.2.tar.gz

tar -zxvf openssl-1.0.2.tar.gz

cd openssl-1.0.2

./config

make && makeinstall

#安装zlib库

cd /usr/local/src

wget http://zlib.net/zlib-1.2.8.tar.gz

tar -zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

make && make install

#安装nginx

cd /usr/local/src

wget http://nginx.org/download/nginx-1.4.2.tar.gz

tar -zxvf nginx-1.4.2.tar.gz

cd nginx-1.4.2

#直接复制,不要换行

./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.2

make

make install

查看版本

/usr/local/webserver/nginx/sbin/nginx-v

配置nginx.conf ,将/usr/local/nginx/nginx.conf替换为以下内容

user root;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}

http
{
  include mime.types;
  default_type application/octet-stream;
  log_format main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
               ‘$status $body_bytes_sent "$http_referer" ‘
               ‘"$http_user_agent" $http_x_forwarded_for‘;

  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;

  sendfile on;
  tcp_nopush on;
  keepalive_timeout 60;
  tcp_nodelay on;
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml;
  gzip_vary on;

  #limit_zone crawler $binary_remote_addr 10m;

upstream linuxip {
	#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
	server 192.168.163.138:8080 weight=3;
	server 192.168.163.139:8080 weight=2;
	server 192.168.163.123:8080 weight=4;
}

 #下面是server虚拟主机的配置
 server
  {
    listen 80;#监听端口
    server_name localhost;#域名
    index index.html index.htm index.php;
    root /usr/local/webserver;#站点目录
 #对 "/" 启用反向代理
    location / {
    	 proxy_pass http://linuxip;
    	 proxy_redirect off;
    	 proxy_set_header X-Real-IP $remote_addr;
    	 #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
    	 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   	 #以下是一些反向代理的配置,可选。
   	 proxy_set_header Host $host;
    	 client_max_body_size 10m; #允许客户端请求的最大单文件字节数
   	 client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
   	 proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
   	 proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
   	 proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
   	 proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
   	 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
   	 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
   	 proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    }
      location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
      expires 30d;
  # access_log off;
    }
    location ~ .*\.(js|css)?$
    {
      expires 15d;
   # access_log off;
    }
    access_log off;
  }

}

检查配置文件的正确性

/usr/local/nginx/nginx -t

启动

/usr/local/nginx/nginx

访问

直接访问Linux IP地址

Nginx常用的命令

重新载入配置文件

/usr/local/nginx/nginx -s reload

重启Nginx

/usr/local/nginx/nginx -s reopen

停止 Nginx

/usr/local/nginx/nginx -s stop

原文地址:https://www.cnblogs.com/zhangux/p/8474557.html

时间: 2024-10-24 12:48:01

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.

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

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

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反向代理服务器

一.主要配置文件:/etc/nginx/nginx.conf 内容如下图 扩展配置文件:/etc/nginx/conf.d/*.conf 图中的主配置文件的末尾,加载所有扩展配置文件里面以.conf结尾的文件.所以我们不要修改主要配置文件(不需要修改),用户配置都放到了/etc/nginx/conf.d/目录下,里面默认有两个配置文件,一个普通的配置,一个是ssl配置. 2.为一个域名配置一个文件(文件名任意,以.conf结尾即可) #cd /etc/nginx/conf.d/ #vim www

Windows下安装Nginx反向代理服务器

一,首先到 Nginx官方网站下载最新版本,下载网址: http://nginx.org/en/download.html 二,解压ZIP包,目录修改为nginx.放置在D盘根目录下,也可以放置在其它目录. 然后在命令行下,切换nginx的主目录执行命令即可起动,停止,重起. start nginx //起动 nginx -s stop // 停止nginx nginx -s reload // 重新加载配置文件并重起 三,配置: #隐藏版本号 server_tokens off; #默认用IP

WINDOWS 2008Server 配置nginx 反向代理服务器

本案例有用过可行 0.先要在域名官网上面配置域名对应的IP地址,然后要在自己路由器上面将80端口映射到要装nginx服务器的IP地址. 1.从官网上面下载nginx1.6.2   WINDOWS版本的.访问地址http://nginx.org/en/download.html 2.解压缩到C盘根目录下面 3.复制C:\nginx\conf\nginx.conf,保存成一个副本 4.编辑nginx.conf,内容如下 #工作进程数,建议设置为CPU的总核数 worker_processes  2;

Nginx反向代理服务器

安装Nginxyum -y install nginx 修改并添加配置文件vi /etc/nginx/nginx.conf在HTTP模块中添加: client_header_timeout 3000; client_body_timeout 3000; fastcgi_read_timeout 3000; client_max_body_size 32m; fastcgi_buffers 8 128k; fastcgi_buffer_size 128k; Handle 504 Error 在Ev

搭建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

linux——Nginx——反向代理服务器

1.介绍: Nginx是一个网页服务器,能够代理HTTP.HTTPS.SMTP.IMPS.POP3的协议连接,以及一个负载均衡器.及HTTP缓存. 2.特点: Nginx是一款面向性能设计的HTTP服务器,相较于Apache.lighttpd,具有占有内存少.稳定性高等优势. Nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强. 整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活. 在LInux操作系统下,Nginx使用epool时