Nginx简单介绍及本地安装

1.Nginx简介

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx 是由俄罗斯人 Igor Sysoev 采用C语言开发编写的,第一个公开版本0.1.0发布于2004年10月4日。

Igor Sysoev出生于1970年的阿拉木图(哈萨克斯坦共和国城市),也就是前苏联。1991年苏联解体,哈萨克斯坦宣布独立,Nginx作者1994年毕业于莫斯科国立鲍曼技术大学;毕业后继续在莫斯科工作和生活,就职于NGINX,Inc,任CTO。https://www.nginx.com/

2.正向代理和反向代理概念

正向代理类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;

3.Nginx主要应用

3.1静态网站部署

Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端。

3.2负载均衡

在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀,

常用的负载均衡策略:轮询、权重、备机…

3.3静态代理

把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx更擅长于静态资源的处理,性能更好,效率更高。

所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。

3.4动静分离

Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。

动态资源,如jsp由tomcat或其他web服务器完成

静态资源,如图片、css、js等由nginx服务器完成

它们各司其职,专注于做自己擅长的事情

动静分离充分利用了它们各自的优势,从而达到更高效合理的架构

4.Nginx的安装及相关命令

4.1因为Nginx是C语言编写的,所以首先保证机器上有C的环境,在机器上运行yum,安装相关依赖包

sudo yum -y install openssl openssl-devel pcre pcre-devel zlib zlib-devel gcc gcc-c++

注意:若第一次执行时,报错not found,不用理会,重新输入命令运行即可完成依赖包下载安装。

 

 

 

4.2将nginx-1.12.2.tar.gz上传到/opt/software下

4.3在/opt/module/software下解压缩nginx-1.12.2.tar.gz包

4.4进入解压缩目录,执行

./configure   --prefix=/opt/module/nginx
make && make install

注意:--prefix=要安装到的目录

 

./configure   --prefix=/opt/module/nginx

make && make install

 

 

 

 

 

4.5安装成功后,/opt/module/nginx目录下结构

 

 4.6启动Nginx

在/opt/module/nginx/sbin目录下执行  ./nginx

注意:如果在非root用户下执行会报错

原因:nginx占用80端口,默认情况下非root用户不允许使用1024以下端口

解决:1.让当前用户的某个应用也可以使用1024以下的端口

sudo setcap cap_net_bind_service=+eip /opt/module/nginx/sbin/nginx

注意:要根据自己的实际路径进行配置

2.或者切换到root用户下启动Nginx:   su -

4.7查看启动情况,

因为nginx不是用java写的,所以不能通过jps查看

ps -ef |grep nginx

4.8在浏览器中输入http://hadoop102/访问

注意:这里的hadoop102是机器的ip映射名,或者直接输入ipv4地址

 

 5 Nginx其他命令

5.1 重启Nginx

./nginx  -s reload

5.2 关闭Nginx

./nginx  -s  stop

5.3 通过配置文件启动

./nginx -c /opt/module/nginx/conf/nginx.conf
/opt/module/nginx/sbin/nginx -c /opt/module/nginx/conf/nginx.conf

其中-c是指定配置文件,而且配置文件路径必须指定绝对路径

5.4 配置检查

当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确

/opt/module /nginx/sbin/nginx -c /opt/module/nginx/conf/nginx.conf –t

5.5 如果80端口被占用 httpd

sudo systemctl stop httpd
sudo systemctl disable httpd

5.6 部分机器启动时报错

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决:ln -s /usr/local/lib/libpcre.so.1 /lib64

6 配置Nginx负载均衡

模拟数据以后应该发给nginx, 然后nginx再转发给我们的日志服务器.

日志服务器我们会分别配置在hadoop102,hadoop103,hadoop104三台设备上.

6.1 打开Nginx配置文件

cd /opt/module/nginx/conf
vim nginx.conf

6.2 修改如下配置

http {
       # 启动省略
    upstream logcluster{
        server hadoop102:8081 weight=1;
        server hadoop103:8081 weight=1;
        server hadoop104:8081 weight=1;
    }
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
            # 代理的服务器集群  命名随意, 但是不能出现下划线
            proxy_pass http://logcluster;
            proxy_connect_timeout 10;
        }
        
        # 其他省略    
}

 

posted @ 2021-07-30 22:00  明明就-  阅读(658)  评论(0编辑  收藏  举报