Negix服务器

Negix服务器

1 简介

​ Nginx(engine x) 是一个高性能的HTTP服务器和反向代理服务器。Nginx是一种服务器软件,其最主要,最基本的功能是可以与服务器硬件结合,让程序员可以将程序发布在Nginx服务器上,让成千上万的用户可以浏览。

​ 除此之外,Nginx还是一种高性能的HTTP和反向代理服务器,同时也是一个代理邮件服务器。也就是说,我们在Nginx上可以:可以发布网站 , 可以实现负载均衡 , 可以作为邮件服务器实现收发邮件等功能。

在此,我们先扯一下正向代理服务器(又称转发代理服务器)与反向代理服务器分别是什么。

2 什么是代理

​ 不论是正向还是反向,代理服务器是用户和服务器之间的中介,完成用户请求和结果的转发。

2.1 正向代理

正向代理服务器的作用是,让用户可以经过该服务器,访问到不能直接访问的服务器上。它面向的对象是所有使用该代理服务器的用户。代理服务器访问的服务器,必须是在外网可见的,只是隔离了部分用户的服务器。例如,在网络中,常见的一个词就是翻墙。我们要访问一个国外服务器的时候,这时候由于网络隔离,虽然国外网友可以随意访问该服务器,可我们访问不到。这时候怎么办呢?这时候,我们一般都是先找个可以访问到的外部服务器,然后让它代理我们发出访问请求,同时接收访问结果并返回给我们。代理服务器相当于一个梯子。我们可以借助它跨过网络隔离。

2.2 反向代理

​ 那反向代理服务器呢?不知道刚才有人注意到了没有,我说的要访问的服务器是可访问的。于此向对应的,就有访问不到的服务器。他们也在网络上提供着服务。但是,由于种种原因(如,安全问题),不能直接暴露于网络之上。这个时候,它们就需要一个代理人,这个代理人直接暴露在外部网络上,可以供他人访问到。至于业务请求,就需要代理人来访问内部服务器了。这种情况下,除了代理服务器,其他人并不知道内部服务器的所在位置,也就没有方法直接访问到内部服务器 。

2.3 区别

​ 是不是听得很迷?这样,我总结一下两者的主要的不同:

​ (1)转发代理的内部是客户端,而反向代理的内部是服务器。即内网的客户端通过转发代理服务器访问外部网络,而外部的用户通过反向代理访问内部的服务器。

(2)转发代理通常接受客户端发送的任何请求,而反向代理通常只接受到指定服务器的请求。如校园网内部用户可以通过转发代理访问国外的任何站点(如果不加限制的话),而只有特定的请求才发往反向代理,然后又反向代理发往内部服务器。

​ 好了,代理服务先简单介绍到这里。下次再介绍它。接下来继续介绍今天的主角,negix。

3 negix服务器的优点

​ Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。 为什么它这么受欢迎呢?介绍一下它的优点就知道了。

​ 1 占有内存少,并发能力强。事实上nginx的并发能力确实在同类型的网页服务器中表现较好,能够支持高达 50,000 个并发连接数的响应 。

​ 2 Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。

​ 3 Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。

​ 4 服务器采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多 。

​ 5 模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。

​ 6 Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级

​ 等等,还有好多优点,足以证明negix是一款非常优秀的服务器。

4 Negix部署(Windows环境下)

​ 1 进入http://nginx.org/网站,下载nginx-1.13.8.zip文件,并将其解压到要安装的位置,安装即完成;

​ 2 启动方式:进入CMD模式,并切换到Nginx安装文件所在的目录,用start nginx命令,启动Nginx服务器;

​ 3 用nginx -s reload命令,重新启动Nginx服务器;

​ 4 用nginx -s stop命令,停止Nginx服务器;

​ 5 发布项目。

​ 5.1 项目部署方式:在这里给大家介绍两种最简单的方式,默认方式和配置文件方式:

​ 方式1:默认方式:

​ 将项目中所有文件复制到nginx/html目录中,启动即可(静态页面)

​ 方式2:配置文件方式

​ 修改配置文件中root部分的路径,启动即可。

​ 5.2 项目发布路径配置

​ 打开conf/nginx.conf文件,修改server段的内容:

			server {
     			   listen       80;
      			   server_name  localhost;
     			   location / {
           		    root   项目的路径;
           		   index  index.html index.htm;
           		   }
		    }

​ 核心解释如下:
Nginx服务器监听localhost:80的请求,
root表示项目的根目录,例如 D:\ws\dayxx
index表示项目中的默认首页是index.html或者是index.htm,Nginx自动访问默认首页
核心解释如下:
Nginx服务器监听localhost:80的请求,
root表示项目的根目录,例如 D:\ws\dayxx
index表示项目中的默认首页是index.html或者是index.htm,Nginx自动访问默认首页

5Negix部署(Linux环境下)

下面介绍linux下如何安装和使用nginx.

​ 1下载Nginx 进入http://nginx.org/网站,下载nginx-1.13.9.tar.gz文件。

​ 2上传Nginx到Linux的root目录下。

​ 3 Nginx是C语言开发,建议在Linux上运行,安装Nginx需要先将官网下载的源码进行编译,编译依赖gcc环境;所以需要安装gcc。安装gcc:yum install gcc-c++

​ 4 安装Nginx依赖环境,

​ yum -y install pcre pcre-devel

​ yum -y install zlib zlib-devel

​ yum -y install openssl openssl-devel

​ 5 解压,并进入解压文件夹

​ tar -xvf nginx-1.13.9.tar.gz -C/usr/local

​ cd /usr/local/nginx-1.13.9

​ 6 编译并安装

​ 1 ./configure 2 make 3 make install

​ 7 启动Nginx

​ 进入nginx的sbin目录
cd /usr/local/nginx/sbin
在sbin目录下启动 ./nginx
在sbin目录下停止 ./nginx -s stop
在sbin目录下重写加载 ./nginx -s reload
开放linux的对外访问的端口80,在默认情况下,Linux不会开放80端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent
查看是否有nginx的线程是否存在 ps -ef | grep nginx

​ 配置文件为:/usr/local/nginx/conf/nginx-conf,和在windows上的配置文件一样,修改完成之后,就可以访问网页了.

反向代理(Linux环境下的配置)

​ 步骤1:编辑配置文件nginx.conf(vim nginx.conf) 增加或修改如下内容:

#增加反向代理tomcat
upstream test{server localhost:8080;}
server {
	listen 80;
	server_name localhost;
	location / {
		# root html;
		index index.html index.htm;
		# 访问tomcat
		proxy_pass http://test;
	}
}

​ 修改后的配置文件为:

#增加反向代理tomcat
upstream test{server localhost:8080;}
server {
	listen 80;
	server_name localhost;
	#charset koi8-r;
	#access_log logs/host.access.log main;
	location / {
		# root html;
		index index.html index.htm;
		# 访问tomcat
		proxy_pass http://test;
	}
	#error_page 404 /404.html;
	# redirect server error pages to the static page /50x.html
	#
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
	root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
    # fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}

6 扩展:

6.1 nginx 内置模块的安装使用

​ 请参阅

https://www.cnblogs.com/52fhy/p/10226651.html

6.2 Negix负载均衡

​ 所谓的负载均衡是指,当同时有多个用户访问我们的服务器的时候,为了减少服务器的压力,我们需要将用户引入服务器集群中的较轻压力的服务器,分担较重压力服务器的负担。

Nginx支持的负载均衡调度算法方式如下:

  1. weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
  2. ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
  3. fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是Nginx默认不支持fair算法,如果要使用这种调度算法,请安装stream_fair模块。
  4. url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在Nginx作为静态服务器的情况下提高缓存效率。同样要注意Nginx默认不支持这种调度算法,要使用的话需要安装Nginx的hash软件包

猜你喜欢

转载自blog.csdn.net/weixin_43708926/article/details/88365542