首页 > 系统相关 >Nginx详解

Nginx详解

时间:2023-08-02 17:33:26浏览次数:30  
标签:缓存 nginx server Nginx 详解 proxy 服务器

Nginx:强大的Web服务器和反向代理服务器

一、简介

Nginx是一款开源的Web服务器和反向代理服务器,广泛应用于互联网应用和网络托管领域。其具有高可靠性、高性能和高扩展性,能够轻松处理大量并发请求,保证服务器资源的有效利用和网络流量的均衡分配。Nginx的主要特点包括高效的事件处理机制、异步非阻塞模式、模块化架构和强大的负载均衡能力。

二、安装Nginx

1.编译安装Nginx

  • 首先,需要安装Nginx的依赖包,包括PCRE、OpenSSL和zlib。
  • PCRE是正则表达式的库,用于解析和处理URL等字符串。
  • OpenSSL是加密和密码库,用于保护数据传输的安全性。
  • zlib是用于数据压缩和解压缩的库。
# yum install gcc-c++
# yum install -y pcre pcre-devel      
# yum install -y zlib zlib-devel
# yum install -y openssl openssl-devel
  • 在安装依赖库后,就可以开始编译Nginx。在终端中执行以下命令:
./configure --prefix=/usr/local/nginx --with-pcre --with-openssl --with-zlib

其中,--prefix指定了安装路径,--with-pcre指定了PCRE的路径,--with-openssl指定了OpenSSL的路径,--with-zlib指定了zlib的路径。

然后执行以下命令进行编译:

make

最后,执行以下命令进行安装:

make install

三、Nginx配置

Nginx的配置文件位于/usr/local/nginx/conf目录下,其中nginx.conf是主配置文件。下面是一个简单的Nginx配置示例:

user nginx;  
worker_processes 4;  
pid /var/run/nginx.pid;  
  
events {  
    worker_connections 1024;  
}  
  
http {  
    include mime.types;  
    default_type application/octet-stream;  
    sendfile on;  
    keepalive_timeout 60;  
    index index.html;  
    server {  
        listen 80;  
        server_name localhost;  
        location / {  
            root /var/www;  
            index index.html;  
        }  
    }  
}

该配置文件中,user指定了运行Nginx的用户,worker_processes指定了进程数量,pid指定了进程ID的存放路径,events中指定了最大连接数,http中包含了各种HTTP服务器的配置。

http中,include指定了包含其他配置文件的路径,default_type指定了默认的文件类型,sendfile指定了是否启用sendfile系统调用,keepalive_timeout指定了HTTP连接的保持时间,index指定了默认的索引文件。

server中,listen指定了监听的端口,server_name指定了服务器名称,location中指定了根目录和默认索引文件。


    四、Nginx进阶配置

    1.缓存策略

    为了提高用户访问速度,Nginx提供了一种缓存机制,可以将常用的静态文件缓存到服务器上,减少对后端服务器的访问。在http段中添加以下配置即可开启Nginx缓存:

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_zone:10m max_size=10g;  
     
    proxy_cache my_zone;  
     
    proxy_pass_header Server;

    上述配置中,我们定义了一个名为my_zone的缓存区,最大缓存10GB的内容,缓存级别为1:2,即按照目录名和URL分别缓存。同时,我们还设置了max_size参数限制缓存大小。

    2.错误页配置

    当用户访问的页面出现404错误或服务器内部错误时,Nginx可以返回预先设置的错误页。在http段中添加以下配置即可设置错误页:

    error_page 404 /404.html;  
    
    error_page 500 502 503 504 /50x.html;  
     
    location = /50x.html {  
     
        root /var/www/html;  
     
    }

    上述配置中,我们定义了404错误页和50x错误页,当出现相应错误时,Nginx会返回对应的错误页。

    3.日志设置

    Nginx提供了丰富的多样的日志功能,可以记录服务器的运行状态、请求的处理情况等。通过配置Nginx的日志设置,可以指定日志的位置、日志的格式、日志的级别等。


    除了基础的Web服务器配置,Nginx还可以配置许多高级功能,如代理服务器、错误页面生成、请求缓存等。这些功能的具体配置可以参考Nginx官方文档。这些功能的具体配置可以参考Nginx官方文档。


    五、Nginx反向代理

    下面是一个使用nginx实现反向代理和负载均衡的实例:

    实例环境:

    • 两台服务器,分别命名为server1和server2,用于部署web应用。
    • nginx服务器,用于实现反向代理和负载均衡。

    nginx配置文件(nginx.conf)

    http {  
        include mime.types;  
        default_type application/octet-stream;  
        sendfile on;  
        keepalive_timeout 60;  
      
        server {  
            listen 80;  
            server_name www.example.com;  
            location / {  
                proxy_pass http://server1;  
                proxy_set_header Host $host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
                proxy_set_header X-Forwarded-Proto $scheme;  
            }  
        }  
      
        server {  
            listen 80;  
            server_name www.example.com;  
            location / {  
                proxy_pass http://server2;  
                proxy_set_header Host $host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
                proxy_set_header X-Forwarded-Proto $scheme;  
            }  
        }  
    }

    解释:

    1. 首先,nginx的配置文件包含了一些基本的配置,如文件类型、发送文件模式、连接超时时间等。
    2. 在http块中,有两个server块。每个server块都监听80端口,服务名称为www.example.com。这些server块用于实现反向代理功能。
    3. location块用于指定请求的处理位置。在这个例子中,所有的请求都通过proxy_pass指令转发到后端的服务器上。
    4. proxy_set_header指令用于设置代理服务器头部信息,包括主机、真实IP、X-Forwarded-For、X-Forwarded-Proto等。这些头部信息在反向代理时需要传递到后端服务器上,以便后端服务器能够正确识别请求的来源和协议。
    5. 这个配置实现了两个server块,分别将请求代理到server1和server2。这意味着当访问www.example.com时,请求将被分发到server1或server2上,实现了负载均衡的功能。
    6. 需要注意的是,这个配置中没有设置负载均衡的策略。如果需要设置负载均衡策略,可以使用nginx的负载均衡功能。例如,可以设置轮询、IP哈希等策略。

    总之,这个配置实现了将请求通过反向代理分发到后端服务器上,并实现了负载均衡的功能。这对于大规模的web应用来说,可以提供更好的性能和可靠性。


    六、负载均衡

    如果一个服务由多个服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。

    upstream myserver1{
    	server 192.168.202.130:8081;        #访问www.example.com有三台服务器为其提供服务
    	server 192.168.202.130:8082;        
    	server 192.168.202.130:8083 weight=2;    #可以分配权重,权重越大,被访问的概率越大
    }		
    server{
    	listen		80;
    	server name	www.example.com;
    	#charset koi8-r;
    	#access_log logs/host.access.log  main;
    
    	location / {
    		proxy_pass	http://myserver1;
    		index  index.html index.htm;
    	}
    }

    可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1。

    七、常见问题与解决

    1. 无法连接服务器
    • 可能原因:服务器网络故障、服务器端口被占用、配置文件错误等。
    • 解决方法:检查网络连接、检查端口占用情况、检查配置文件等。
    1. 访问量过大
    • 可能原因:服务器负载过高、网络带宽不足等
    • 解决方法:优化服务器配置、增加服务器数量、升级网络带宽等。

    八、总结

    Nginx作为一款强大的Web服务器和反向代理服务器,在互联网应用和网络托管领域有着广泛的应用。其高效的事件处理机制、异步非阻塞模式、模块化架构和强大的负载均衡能力,使得Nginx成为众多企业和开发者的首选。通过合理配置Nginx的缓存、错误页和日志等功能,可以进一步提升服务器的性能和稳定性。同时,对于常见的问题,如无法连接和访问量过大,可以通过相应的解决方法进行排除。未来,随着互联网技术的发展,Nginx的应用场景将更加丰富和广泛。

    标签:缓存,nginx,server,Nginx,详解,proxy,服务器
    From: https://blog.51cto.com/u_16206331/6940590

    相关文章

    • 银河麒麟V10 安装Nginx
      由于以下方式只能安装1.14.1版本安装Nginx:sudoyuminstallnginxNginx常用命令方法一:编辑/etc/rc.local,添加开机启动运行命令直接编辑/etc/rc.local文件,文件内容最底下添加启动命令:/usr/local/nginx/sbin/nginx1、启动Nginx服务器命令:去到sbin路径:cd/usr/local/nginx/sbin启动N......
    • MySQL内存分配详解
      InnoDB存储引擎层基础内存分配如果在编译MySQL的时候不开启FPS的监控,InnoDB对动态内存(heap)的分配和释放使用基础的new、delete、malloc、free等。默认InnoDB对内存的分配和回收会添加FPS的监控模块。InnoDB对动态内存(heap)的分配和回收使用封装后的函数,主要在ut_allocator类中实......
    • 基础 | 详解3D结构光如何标定
      结构光视觉的优点:非接触、信息量大、测精度高、抗干扰能力强。结构光视觉传感器参数的标定包括:摄像机参数标定、结构光平面参数标定。结构光视觉测量原理图我们不考虑镜头的畸变,将相机的成像模型简化为小孔成像模型,则特征点的图像坐标Pf与其在摄像机坐标系下的三维坐标P之......
    • 请求头详解——Headers
      请求头定义:客户端,即浏览器通过输入url后确定等于做了一次向服务器的请求动作,在这个请求里面带有请求参数,请求参数的集合即为请求头。请求头的参数(常用的):Accept:浏览器可接收的文件类型Accept-Charset:浏览器可以接收的编码类型Accept-Encoding:浏览器可以接收的压缩编码类型Ac......
    • maven-resources-plugin详解
      核心资料来源:maven-resources-plugin详解(csdn.net)maven-resources-plugin到低在什么场景下使用?他到底有什么作用?他和pom当中配置的resources标签又有什么关联?为什么有的项目使用了该插件而有的却没有?resources当中的filtering标签到低是干什么的?maven怎么打包过滤文件?......
    • Docker部署Nginx
       docker安装nginx1.下载nginx镜像dockerpullnginx2.创建nginx挂载目录    mkdir-p/usr/local/nginx/{conf,html,log,ssl}3.启动nginx容器,用于copy一些文件放在步骤2的目录下     dockerrun--namenginx-p80:80-dnginx4.将nginx容器下文件,copy到步......
    • 镭拓详解塑料激光焊接机在汽车车灯塑料焊接上的应用
      编辑:镭拓激光随着激光焊接技术的快速发展与进步,激光技术应用深入到各个领域,尤其是在高精密制造业领域。比如汽车制造行业上,激光焊接技术的应用更为深刻和重要。不过很多人可能不知道是,汽车制造业使用到的激光焊接技术可不仅仅是一种。你激光焊接技术只是用在汽车车上的金属材料焊接......
    • git如何上传本地代码文件到git仓库【图文详解】
      第一步:新建代码库第二步:复制仓库地址第三步:在本地文件夹内右击,通过GitBashHere进入命令窗口,克隆复制的仓库地址    第四步:将你的项目添加至该文件夹下,通过命令进行添加至仓库主要命令1:gitinit(初始化仓库)2:gitadd.(这里的.表示添加所有文......
    • Nginx报错Can't open PID file /var/run/nginx.pid (yet?) after start: No such file
      1.关于报错启动nginx服务发现Systemd中存在报错:Can'topenPIDfile/var/run/nginx.pid(yet?)afterstart:Nosuchfileordirectory2.解决办法2.1查看版本和配置选项信息nginx-V参数看到报错中提到的信息2.2定位问题文件增加启动参数配置发现该文件存......
    • spring的事务注解详解
      Spring是一个流行的开发框架,它提供了很多功能和特性,其中包括事务管理。事务管理是在应用程序中执行一系列操作时,确保数据的一致性和完整性的关键方面之一。Spring框架提供了多种方式来管理事务,其中最常用的方式是使用注解。通过在方法或类级别上添加特定的注解,可以将相关的方法或类......