道阻且长,行则将至
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
当提到 Linux 中间件,Nginx(发音为“engine X”)是一个被广泛使用的高性能Web服务器和反向代理服务器。它以其卓越的性能、可靠性和灵活性而受到众多网站和开发者的青睐。作为一款开源软件,Nginx在众多企业和个人项目中扮演着重要的角色。
无论您是初学者还是有经验的管理员、开发人员,本文将为您提供适用的指南和步骤,帮助您了解和使用Nginx,从而轻松构建稳定、高效的Web应用程序。
让我们开始探索Nginx的世界吧!
提示:以下是本篇文章正文内容,下面案例可供参考
一、Nginx是什么?
中间件(中间件是指在不同应用程序或系统之间传递数据、消息或请求的一种软件组件。它可以充当应用程序之间的"桥梁",在数据传输的过程中进行处理、转换或增加功能。)
轻量级、高性能(官方给出的数据是比Apache好100倍),国内一般都是混合使用这两款中间件的,nginx性能好,apache稳定。
Nginx最初由俄罗斯的程序设计师Igor Sysoev创建并首次发布于2004年,其设计目标是解决C10K问题,即如何支持高并发连接。借助其事件驱动的架构和轻量级进程模型,Nginx能够高效地处理并发请求,具备出色的负载均衡和反向代理能力。
Nginx的优点不仅仅在于其出色的性能。它还具备灵活的配置选项,使得开发人员可以根据项目需求进行定制化配置。Nginx还支持强大的模块化体系结构,允许用户通过添加模块来扩展其功能,如缓存、gzip压缩、SSL/TLS支持等。
二、安装Nginx
两中安装方法,编译安装、yum安装
编译安装是需要安装依赖的
- 依赖:openssl-devel、zlib-devel、ncurses-devel、pcre-devel、gcc、gcc-c++
yum安装
- nginx的rpm包在epel源中
也就是需要配置epel的yum源才能安装
编译安装
nginx 压缩包位置
下载位置:https://nginx.org
https://nginx.org/download/nginx-1.24.0.tar.gz
第一步:下载nginx的压缩包
[root@localhost html]# wget http://nginx.org/download/nginx-1.24.0.tar.gz 1
这里没有wget的同学,使用yum install wget -y 就可以下载啦
这时候在当前目录下会出现nginx+版本号+后缀的压缩包
第二步:安装依赖软件
[root@localhost ~]# yum install openssl-devel zlib-devel ncurses-devel pcre-devel
gcc gcc-c++ -y
第三步:解压缩进入解压目录
[root@localhost ~]# tar xvf nginx-1.24.0.tar.gz
[root@localhost ~]# cd nginx-1.24.0
第四步:安装nginx
[root@localhost nginx-1.24.0]# mkdir /usr/local/nginx
[root@localhost nginx-1.24.0]# ./configure --prefix=/usr/local/nginx && make && make install
可以查看上一条命令的执行情况 echo $? 如果输出0的话说明命令执行成功
nginx目录结构
[root@localhost nginx]# ls
conf html logs sbin
- conf:这个目录存放的是nginx的配置文件
- html:这个目录是nginx默认网站的根目录
- logs:这个是nginx的日志文件目录
- sbin:这个是nginx的启动程序的目录
第四步:启动nginx
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# lsof -i :80
注意:如果显示这个提示说明80端口被占用了
这里有两个解决方法:
1)修改nginx的默认端口号
2)释放80端口(关掉对应的进程)
这里我们选择第二种方法
查看80端口,lsof -i:80,发现是httpd占用的,直接杀掉
lsof -i:80
pkill httpd
启动
扩展
1)重新启动nginx
方法1:./nginx -s reload
方法2:pkill杀死进程,再次启动
2)nginx开机自动启动
在这里我们得知道一个文件:/etc/rc.d/rc.loacl
这个文件开开机时的最后一步时会将里面的命令执行一遍。
[root@localhost sbin]# vim /etc/rc.d/rc.local
写入:/usr/local/nginx/sbin/nginx
注意:这里centos7之后与centos7之前使用这里的操作是不一样的。centos7之前的直接写入保存退出就可以,centos7之后的写入保存退出之后还需要执行一个命令:chmod +x /etc/rc.d/rc.local 才可以使用。
[root@localhost sbin]# chmod +x /etc/rc.d/rc.local
这里我们也可以将启动nginx的命令写入一个脚本,然后开机执行脚本也可以。
测试nginx
这里确保我们的物理机可以和虚拟机进行通讯,不会弄的小伙伴可以去看我之前写的链接: Linux配置网络的博文
在物理机上输入虚拟机的IP地址就可以查看
这里我们可以通过修改网站根目录来修改页面上的内容
vim index.html
修改想要展现的内容,保存退出
然后重新访问
啊啊啊,这里乱码了。不管了就这样吧!!!
解决办法是在文件里加一个中文的字符集
三、Nginx的配置文件
1、什么是nginx的配置文件
Nginx的配置文件是一个文本文件,用于配置Nginx服务器的行为、路由规则、代理设置、日志记录等各种参数和选项。这些配置文件通常采用简单的语法结构,由一系列指令和块组成,以控制Nginx服务器的行为。
总的来说,Nginx配置文件是管理和配置Nginx服务器行为的核心文件,通过对配置文件的修改和调整,可以实现各种不同的服务器行为和功能。
2、配置文件
1)配置文件的位置
yum安装:/etc/
编译安装:安装位置/conf
文件名都叫:nginx.conf
这里我们是编译安装的文件位置在:/usr/local/nginx/conf/nginx.conf
2)配置文件的基本结构
- 全局块(main): 包含全局性的配置指令,如工作进程数、用户权限、日志文件位置等。这些指令影响整个Nginx服务器的行为。
- 事件块(events): 定义Nginx服务器的事件模型,包括事件驱动的工作方式和连接超时等参数。
- http块: 包含HTTP服务器的配置指令,如HTTP请求的处理方式、虚拟主机的设置、HTTP代理的配置等。在http块内部,还可以包含server块和location块,用于配置具体的虚拟主机或路径的行为。
- server块: 定义了一个虚拟主机(server),包括该虚拟主机的监听端口、域名、SSL证书、代理设置等。
- location块: 定义了一个URI的匹配规则和对应的行为,如代理转发、静态文件服务、重定向等。
例:
# 全局块
user nginx; # Nginx运行的用户
worker_processes auto; # Nginx工作进程数,使用CPU核心数自动设置
error_log /var/log/nginx/error.log; # 错误日志文件路径
# events块
events {
worker_connections 1024; # 每个工作进程的最大连接数
}
# http块
http {
include mime.types; # 包含MIME类型配置文件
# 默认类型
default_type application/octet-stream;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; # 访问日志文件路径
# server块
server {
listen 80; # 网站的端口号
server_name localhost; # 网站的域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html; # 网站的根目录
index index.html index.htm; # 网站的默认首页
}
sendfile on; # 开启sendfile传输文件
tcp_nopush on; # 开启tcp_nopush
tcp_nodelay on; # 开启tcp_nodelay
keepalive_timeout 65; # 客户端连接保持时间
types_hash_max_size 2048; # MIME类型哈希表大小
include /etc/nginx/conf.d/*.conf; # 包含其他配置文件
include /etc/nginx/sites-enabled/*; # 包含虚拟主机配置文件
}
可以使用vim打开配置文件
[root@localhost html]# vim /usr/local/nginx/conf/nginx.conf
3)server块里面的常用配置
server就是虚拟主机,可以写多个;从而对于不同的页面。
server {
listen 80;
server_name www.web1.com;
root /usr/lcaol/nginx/html;
index index.html index.htm;
access_log logs/host.access.log main;
error_log logs/host.error.log main;
}
listen 80; # 网站的端口号
server_name localhost; # 网站的域名
root html; # 网站的根目录
index index.html index.htm; # 网站的默认首页
location(了解)
location / { … } 是 Nginx 配置中非常重要的一个部分,用于配置服务器上不同 URL 路径的行为。
- location / { … } 定义了一个匹配根路径 / 的 location 块。这表示任何以服务器域名访问的请求都会匹配到这个 location 块。
- 在 { … } 内部是该 location 的配置指令。这些指令可以控制服务器对于该路径下请求的行为,比如代理转发、静态文件服务、重定向等。
下面是一些常见的 location / { … } 的用法:
1、静态文件服务: 可以配置 Nginx 提供静态文件服务,直接返回服务器上的静态文件,而不需要通过后端应用程序处理。
location / {
root /path/to/static/files;
index index.html index.htm;
}
这样配置后,当用户访问服务器根路径时,Nginx 将在 /path/to/static/files 目录下寻找 index.html 或 index.htm 文件,并返回给用户。
2、代理转发: 可以配置 Nginx 将请求转发给后端应用程序服务器进行处理。
location / {
proxy_pass http://backend_server;
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;
}
这个配置会将所有根路径下的请求转发给名为 backend_server 的后端服务器进行处理。同时,通过 proxy_set_header 设置一些请求头,以便后端服务器获取客户端真实 IP 等信息。
3、反向代理缓存: 可以配置 Nginx 将请求转发给后端服务器,并缓存后端服务器的响应,加快后续相同请求的响应速度。
location / {
proxy_pass http://backend_server;
proxy_cache my_cache;
proxy_cache_valid 200 304 10m;
proxy_cache_key "$scheme$request_method$host$request_uri";
}
个配置会将所有根路径下的请求转发给后端服务器,并在 Nginx 中设置缓存。proxy_cache 定义了缓存名称,proxy_cache_valid 定义了缓存有效期,proxy_cache_key 定义了缓存的键。
总之,location / { … } 是 Nginx 配置中非常重要的一部分,通过它可以控制不同 URL 路径下请求的行为,实现诸如静态文件服务、代理转发、反向代理缓存等功能。
总结
常用到的命令
第一步:下载
[root@localhost html]# wget http://nginx.org/download/nginx-1.24.0.tar.gz
第二步:安装依赖
[root@localhost ~]# yum install openssl-devel zlib-devel ncurses-devel pcre-devel
gcc gcc-c++ -y
第三步:安装nginx
[root@localhost ~]# tar xvf nginx-1.24.0.tar.gz
[root@localhost ~]# cd nginx-1.24.0
[root@localhost nginx-1.24.0]# ./configure --prefix=/usr/local/nginx && make &&
make install
第四步:启动程序:
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
[root@localhost sbin]# lsof -i :80
扩展
1、重启nginx
方法1:
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -s reload
方法2:
先pkill杀死
然后再启动
2、让nginx开机自动启动
[root@localhost ~]# echo "/usr/local/nginx/sbin/nginx">>/etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local