Nginx server之Nginx作为web服务器(基于域名或IP的web服务器)

青春壹個敷衍的年華 提交于 2020-03-27 11:38:54

3 月,跳不动了?>>>

一:nginx简介

Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。  其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。

Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型.

Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多. 。Nginx可作为7层负载均衡服务器来使用。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.

总体来说nginx的有以下八大优点:

1.高并发连接:官方测试能支撑5万并发连接,在实际生产环境中跑到2,~3W并发连接。

2.内存消耗少:在3W并发连接下,开启的10个NGINX进程才消耗150M内存(15M*10=150M)

3.配置文件非常简单:风格跟程序一样通俗易懂。

4.成本低廉:Nginx作为开源软件,可以免费使用,而购买F5 BIG-IP、NetScaler

等硬件负载均衡交换机则需要十多万至几十万人民币。

5.支持rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分发到不同的后端服务器群组。

6.内置的健康检查功能:如果Nginx Proxy后端的后台web服务器宕机了,不会音响前端访问。

7.节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。

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

二:具体配置步骤

 //nginx编译安装及管理命令

shell> ./configure --prefix=/usr/local/nginx --user=apache --group=apache --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module && make && make install

#参数解释
--prefix=PATH                      set installation prefix
--user=USER                        set non-privileged user for
--group=GROUP                      set non-privileged group for
--with-http_ssl_module             enable ngx_http_ssl_module
--with-http_stub_status_module     enable ngx_http_stub_status_module     ---支持监控
--with-http_gzip_static_module     enable ngx_http_gzip_static_module     ---支持压缩

#启动nginx
shell> /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#测试nginx配置文件格式是否正确
shell> /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
#关闭nginx
shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -TERM
#重启nginx
shell> cat /usr/local/nginx/logs/nginx.pid | xargs kill -HUP
HUP      重启
TERM,INT 快速停止
USR1    重新打开日志文件,用于日志切割
USR2    平滑升级可执行程序
QUIT     从容关闭
WINCH    从容关闭工作进程

//基于IP的虚拟主机

#环境说明
1.centos6.4 IP:10.10.54.157
2.编译安装nginx,搭建web服务器,并实现基于IP的虚拟主机
3.一个IP对应一个域名,输入不同的域名DNS解析出不同的IP
4.监听端口:(基于IP)
10.10.54.157:80        www.zijian.com
10.10.54.154:80        bbs.zijian.com
5.
shell> ifconfig eth0:0 10.10.54.154 netmask 255.255.255.0

#配置步骤
shell> vim /usr/local/nginx/cong/nginx.conf
------------------------------------------------------
user  apache apache;
worker_processes  2;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
       }

http {  
  server {
           listen          10.10.54.157:80;      #这个IP根目录是/var/www/html
           server_name     10.10.54.157;
           charset uft-8;
           access_log logs/www.access.log main;
           root /var/www/html;      
           location / {
           index index.html index.htm;
           }
      }

 server {
            listen         10.10.54.151:80;       #这个IP根目录是/var/www/bbs
            server_name    10.10.54.151;
            access_log logs/bbs.zijian.com.log;
            root /var/www/bbs;
            location / {
            index index.html index.htm;
            }
      }
}
-------------------------------------------------------

//基于域名的虚拟主机并实现代理

#环境说明
1.nginx服务器 IP:10.10.54.157
2.基于域名的服务器,一个IP对应多个域名,使用不同的域名访问不同的网站(即不同的根目录)
3.基于域名的nginx web服务器,同一个IP映射多个域名(www.zijian.com,bbs.zijian.com)

#配置文件修改
shell> vim /usr/local/nginx/cong/nginx.conf
------------------------------------------------------
http {  
  server {
            listen          80;      #www.zijian.com对应的网站是/var/ww/html
            server_name     www.zijian.com;
            charset uft-8;
            access_log logs/www.access.log main;
            root /var/www/html;      
            location / {
            index index.html index.htm;
            }
       }

 server {
            listen         80;       #bbs.zijian.com对应的网站是/var/www/bbs
            server_name    bbs.zijian.com;
            access_log logs/bbs.zijian.com.log;
            root /var/www/bbs;
            location / {
#当在bbs.zijian.com:80端口监听到连接请求时,通过nginx代理到10.10.54.150:1500上面,当然10.10.54.150:1500必须处于正常监听状态
            proxy_pass http://10.10.54.150:1500; 
            }
      }
}

#浏览器输入:www.zijian.com 时访问html,输入bbs.zijian.com 时访问bbs





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!