Linux下的nginx的安装及使用
一、了解nginx和linux环境
1.1、Nginx
Nginx(发音为“engine-x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。Nginx是由伊戈尔·赛索耶夫为解决C10K问题而设计的,即同时处理大量客户端连接的问题。它特别注重高并发、高性能和低内存使用。
Nginx的主要特点包括:
- 高并发连接处理:Nginx使用异步事件驱动的方法来处理请求,这使得它在处理大量并发连接时非常高效。
- 反向代理与负载均衡:Nginx可以作为反向代理服务器使用,帮助在多个后端服务器之间分配客户端请求,从而提高网站的可用性和性能。
- 静态内容和索引文件的高效服务:Nginx非常擅长提供静态内容,它可以直接从硬盘读取静态文件并快速响应客户端请求。
- 灵活的配置语言:Nginx的配置文件结构清晰,语法简单,易于理解和修改。
- 低资源消耗:Nginx在保持高性能的同时,还能保持非常低的内存和CPU消耗。
- 热部署:支持无缝重启,可以在不中断客户端连接的情况下更新配置或升级软件。
Nginx广泛应用于各种网站和应用中,特别是那些需要处理大量并发请求的场景,如大型门户网站、电商平台和云服务等。它的稳定性和高效性使其成为许多知名公司和网站的首选。
1.2、linux用的centos
1.3、连接linux的工具Xshell和Xftp,个人版
二、下载nginx
2.1、手动下载安装
官网:下载链接
下载后,手动上传到linux的自定义目录下(可以使用XFTP,个人免费版,如需链接,直接留言)
2.2、联网直接安装(推荐)
需要直接将压缩包放进/usr/local文件中,运行下载命令时需要提前进到该目录
#下载nginx安装包
wget -c http://nginx.org/download/nginx-1.24.0.tar.gz
注意:如果没有wget命令,需要先安装:(centos版本命令:)yum install -y wget
三、开始安装
3.1、首先安装相应的依赖
我是直接在线安装,centos使用yum命令安装
#安装nginx所需要的依赖包
yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
安装成功!
另一篇很火的博客中提供了离线版(爱吃面条的猿)
3.2、开始安装
找到nginx安装包,在/usr/local/下
解压
#解压安装包
tar -zxvf nginx-1.24.0.tar.gz
进入解压后的nginx-1.24.0
cd ./nginx-1.24.0
执行脚本
···java
#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx
···
然后执行两个命令,进行编译安装
make
make install
四、启动Nginx
首先进入到nginx路径下,刚才的安装路径
#启动脚本是在# /usr/local/nginx/sbin/nginx#启动,
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#停止
/usr/local/nginx/sbin/nginx -s stop
#重载
/usr/local/nginx/sbin/nginx -s reload
#杀掉nginx
/usr/local/nginx/sbin/nginx -s quit
访问:ip(localhost)+端口,端口默认为80,
安装到此结束!!!
如果访问不了,可能是防火墙的问题(ip访问的时候),可以看下边总结了
五、配置代理
5.1、配置代理需要知道的前提
了解nginx里面各个文件夹是干什么的?
- conf:这个目录包含Nginx的配置文件。最重要的是 nginx.conf 文件,这是Nginx的主配置文件。
- html:这个目录通常用作Nginx的默认文档根目录。也就是说,如果您没有为服务器指定其他的根目录,Nginx会从这个目录中提供静态文件。默认情况下,它包含一个简单的 index.html 页面,通常用于测试Nginx服务器是否正常运行。
- logs:这个目录用于存放日志文件。其中最常见的有 access.log 和 error.log。access.log 记录所有的访问请求,而 error.log 记录错误信息,这对于调试和监控服务器状态非常有用。
- sbin:这个目录包含Nginx的可执行文件,通常是 nginx 本身。这是用来启动、停止或重载Nginx配置的主要执行文件。
5.2、配置代理
查看conf配置文件
#找到nginx的配置文件,编辑
vim /usr/local/nginx/conf/nginx.conf
配置文件的详细解释:
#user nobody;#运行nginx的默认账号#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 1;#事件区块开始
events {#单个进程最大链接数(最大连接数=连接数*进程数)#根据硬件调整,与前面工作进程配合起来用,尽量大,但别把CPU跑到100%就行,每个进程允许的最多连接数,理论上为每台nginx服务器的最大连接数
worker_connections 1024;}#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {#include:导入外部文件mime.types,将所有types提取为文件,然后导入到nginx配置文件中。
include mime.types;#默认文件类型
default_type application/octet-stream;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设置为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载,注意:如果图片显示不正常把这个改成off#sendfile指令指定,nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用,必须设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime
sendfile on;#长连接超时事件,单位是秒
keepalive_timeout 65;#第一个server区块开始,表示一个独立的虚拟主机站点
server {#提供服务的端口,默认80
listen 80;#提供服务的域名主机名
server_name localhost;#对 “/” 启动反向代理,第一个location区块开始
location / {
root html;#服务默认启动目录,可以改成指定的目录位置
index index.html index.htm;#默认的首页文件,多个用空格分开}#错误页面路由
error_page 500502503504 /50x.html;# 出现对应的http状态码是,使用50x.html回应客户
location = /50x.html {# location区块开始,访问50x.html
root html;# 指定对应的站点目录为html}}}
配置文件作用域:
- 全局区域:从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组)、允许生成的worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。必须上面的第一行配置
# 允许的work process数
worker_processes 1;
# 引入其他配置文件,其他配置文件可以放在conf目录下的domains文件夹下(没有自己创建一个)
include domains/helloWord.conf
这是Nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理也越多,但是会受硬件、软件的设备的制约。
- events区域:events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker_process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大链接数等。
worker_connections 1024;
样例中就表示每个work process支持的最大连接数为1024,这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置。
- http区域块:这块是Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。这里http块包含:http全局块、server 块
- http全局块:http全局块配置的指定包括文件引入、MIME-TYPE定义、日志自定义、连接超时事件、单链接请求数上限等。
- server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。每个server块也分为server全局块以及可以同时包含多个location块。- 全局server块:最常见的配置就是本虚拟机主机的监听配置和本虚拟机的名称或IP配置。- location块:一个server块可以配置多个location块。这块的主要作用就是基于nginx服务器接收到的请求字符串(例如:server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等共鞥,还有许多第三方模块的配置也可以在这里进行。
六、遇到的问题
6.1、在执行安装nginx时,执行脚本时出现没有C编译不了???
#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx
checking for OS
Linux 3.10.0-1160.el7.x86_64 x86_64 checking for C compiler … not found
./configure: error: C compiler cc is not found解决办法: 由于我自己使用的时centos系统,所以运行以下命令,安装相应的工具
sudo yum groupinstall "Development Tools"
补充:其它系统怎么办?
以下是一些常见Linux发行版安装GCC(GNU Compiler Collection)的命令:
- 对于基于Debian的系统(如Ubuntu):
sudo apt updatesudo apt install build-essential
这将安装GCC和其他重要的开发工具。 - 对于基于RPM的系统(如CentOS):
sudo yum groupinstall "Development Tools"
这个命令会安装GCC和一组开发工具。 - 对于Fedora:
sudo dnf groupinstall "Development Tools"
这也会安装GCC和其他开发工具。
安装完成后,就可以重新运行
./configure
命令,完美!!!
6.2、防火墙问题导致访问localhost:80无法访问成功
如果浏览器访问不通,请检查是否开启防火墙限制,将防火墙关闭或将端口加入到防火墙白名单中,这里nginx的默认端口为80
- 放行端口
#查看已放行的端口
firewall-cmd --list-all
#将80端口加入到防火墙放行白名单中,并重载防火墙
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
- 关闭防火墙
#临时关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service
- 设置nginx 的开机启动
vim /etc/rc.local
文本底部追加
/usr/local/nginx/sbin/nginx
【注】如有不妥,还请大佬指正!
[参考文献]
1、https://blog.csdn.net/weixin_50003028/article/details/132567183
版权归原作者 雨后的小木屋 所有, 如有侵权,请联系我们删除。