欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx的快速入门

程序员文章站 2024-03-23 13:24:46
...

一.什么是nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,*使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

二.常用功能

1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理:一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色。
nginx的快速入门

反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。
可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。

nginx的快速入门
2.负载均衡
负载均衡是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载。Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦。
3、web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。

三.安装Nginx

这⾥下载的是 nginx-1.17.10.tar.gz 安装包,并将其直接放在了 root ⽬录下
1、在 /usr/local/ 下创建 nginx ⽂件夹并进⼊

cd /usr/local/
mkdir nginx
cd nginx

2、将 Nginx 安装包解压到 /usr/local/nginx 中即可

tar zxvf /root/nginx-1.17.10.tar.gz -C ./

解压完之后, /usr/local/nginx ⽬录中会出现⼀个 nginx-1.17.10 的⽬录
3、预先安装额外的依赖

yum -y install pcre-devel
yum -y install openssl openssl-devel

4.安装Nginx

cd nginx-1.17.10
./configure
make && make install

安装完成后,Nginx的可执⾏⽂件位置位于

/usr/local/nginx/sbin/nginx

5、启动Nginx

cd /usr/local/nginx/sbin
./nginx

如果想停止Nginx或重新加载Nginx,可以使用

./nginx -s stop
./nginx -s reload

这是启动游览器验证情况 输入你的主机ip
nginx的快速入门

四.反向代理

实例一:使用www.123.com 访问Nginx,再通过Nginx访问tomcat
1.在Windows系统的host文件进行域名和虚拟机ip的配置
nginx的快速入门

nginx的快速入门
2.进入Nginx的配置文件修改

cd /usr/local/nginx/conf/nginx.conf

server {
        listen       80;
        # 配置虚拟机的ip
        server_name  192.168.2.63;
        location / {
        	# 要虚拟机的Tomcat
            proxy_pass http://127.0.0.1:8080;
            root   html;
            index  index.html index.htm;
        }

3.启动Nginx和Tomcat,访问www.123.com 出现
nginx的快速入门

实例二:根据访问的路径不同跳转到不同端口的服务中,Nginx的监听端口为9001
访问http://127.0.1:9001/edu/ 跳转到127.0.0.1:8080/
访问http://127.0.1:9001/vod/ 跳转到127.0.0.1:8081/
1.在准备一个Tomcat 将端口号修改为8081
2.在端口号为8080的Tomcat的webapps下创建文件夹edu 添加一个HTML页面,内容为 8080,同理在另一个Tomcat创建文件夹edu,添加HTML页面,内容为8081
3.进入Nginx的配置文件修改

server {
        listen       9001;
        server_name  192.168.2.63;

        location ~ /edu/ {
            proxy_pass http://127.0.0.1:8080;
        }

        location ~ /vod/ {
            proxy_pass http://127.0.0.1:8081;
        }
    }

    ~  :用于表示uri包含正则表达式,并且区分大小写
    ~* :用于表示uri包含正则表达式,并且不区分大小写

访问 http://192.168.2.63:9001/edu/a.html
nginx的快速入门
访问 http://192.168.2.63:9001/vod/a.html
nginx的快速入门

五.负载均衡

1.企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。
2.Nginx实现负载均衡
同样使用两个tomcat模拟两台应用服务器,端口号分别为8080 和8081
Nginx的负载分发策略
1)、轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。
2)、权重 ——weight
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
3、配置Nginx的负载均衡与分发策略
1)在8080的Tomcat的webapps里面的edu文件复制一份到8081里面
2)在Nginx的nginx.conf添加如下内容:

upstream myserver{
		# 监听的Tomcat
        server 192.168.2.63:8080;
        server 192.168.2.63:8081;
    }
server {
        listen       80;
        # 虚拟机的ip
        server_name  192.168.2.63;

        location / {
            proxy_pass http://myserver;
            root   html;
            index  index.html index.htm;
        }

nginx的快速入门
nginx的快速入门

六.动静分离

为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。用户请求的动态文件比如servlet,jsp则转发给Tomcat,Jboss服务器处理,这就是动静分离。这也是反向代理服务器的一个重要的作用。
1.在根目录下创建一个文件夹data,在data里面创建image和www两个文件夹,分别放一些图片和静态html文件
2.在Nginx的nginx.conf的server里面添加如下内容:

server {
        
        location /www/{
           root /data/;
           index index.html index.htm;
        }

        location /image/{
           root /data/;
           autoindex on;
        }
}

分别输入http://192.168.2.63/image/ http://192.168.2.63/www
nginx的快速入门
http://192.168.2.63/www/a.html
nginx的快速入门
发现可以访问静态资源

相关标签: nginx