nginx网站服务

2023-12-13 07:22:45

nginx的了解

nginx的特性:

1.io多路复用

2.高性能

3.高并发

4.占用资源少

nginx有哪些优点?

1.跨平台,配置简单

2.非阻塞、高并发连接:处理2-3万并发连接数,官方检测能支持5万并发,而apache只能1万。

3.内存消耗小

4.成本低,且开源

5.稳定性高,宕机概率非常小

6.内置健康检查功能:如若服务器宕机,会做健康检查,之后收到的请求就不会发送给宕机服务器了,转而发送给其他节点。

nginx应用场景

1.http服务器

2.虚拟主机

3.反向代理,负载均衡

4.安全管理

5.可以做缓存服务器

nginx和apache的区别

nginxapache
nginx是一个基于时间的web服务器apache是一个基于流程的服务器
所有请求都由一个线程处理单个线程处理单个请求
nginx避免子进程的概率apache是基于子进程的
nginx占用资源和内存少apache占用资源和内存多
处理请求异步非阻塞,在高并发下能保持低资源,低消耗,高性能处理请求阻塞
编写模块简单编写模块复杂

编译安装nginx

编译安装过程
cd ?/opt
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf ? nginx-1.18.0.tar.gz
cd ?nginx-1.18.0
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl ?openssl-devel?
#请使用网络源
mkdir /apps/nginx -p ? ?
./configure ? --prefix=/apps/nginx
make
make ?install

ln -s /apps/nginx/sbin/nginx ? /usr/sbin/nginx?
#做软链接 ? 可以补全 ?
nginx ??
#直接启动
?

检查、启动、重启、停止Nginx服务

检查配置文件是否配置正确

nginx -t ?

启动

nginx

停止nginx

#先查看nginx的pid号

cat /usr/local/nginx/logs/nginx.pid

kill -3 pid号? ? ? ? ? ? ? #可以优雅的停止进程:让他先把事情处理完再解决

killall -3 nginx

kill -s quit (pid号)

killall -s quit nginx

nginx -s stop 停止nginx

nginx -s quit 停止nginx

重载

kill -1 (pid号)

kill -s hup (pid号)

killall -1 nginx

killall -s HUP nginx

nginx平滑升级的步骤

1.首先先去官网上下载新版本的软件包

tar -zxvf nginx-1.xx.xx.tar.gz

2.进行解压配置编译

cd nginx-1.xx.xx

./configure \ --prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module \

--with-http_ssl_module

make

3.生成二进制文件,将老版本二进制文件进行备份,防止版本回退

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old

4.把更新好的程序复制过来进行替换

cp objs/nginx /usr/local/nginx/sbin/nginx

5.执行make upgrade,完成平滑升级

? 或者先killall nginx,再/usr/local/nginx/sbin/nginx

nginx的最大并发如何查看和设置

理论上查看nginx最大并发:查看他的配置文件

vim /usr/local/nginx/conf/nginx.conf

worker processes (worker工作进程数,一般设置与CPU数量相同,或auto)

*worker_connections (每个worker进程能够处理的连接数)

真正实现的话要去设置

应用级别的打开文件数和系统级别的打开文件数

应用级别:

worker rlimit nofile (worker进程最大可以打开的文件数)

系统级别:

ulimit -n
/etc/security/limits.conf
nofile?

认识nginx服务的主配置文件

vim /usr/local/nginx/conf/nginx.conf

1.全局块:全局配置,对全局生效

2.events块:配置影响nginx服务器与用户的网络连接

3.http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置

4.server块:配置虚拟主机的相关参数,一个http块中可以有多个server块

5.location块:用于配置匹配的uri

6.upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分

1.全局配置

user nobody

#运行用户,默认为nobody

worker_processes 1

#设置进程数,设置为auto,nginx将会自己获取这个数值

error_log logs/error.log

#错误日志文件的位置

pid logs/nginx.pid

#pid文件的位置

worker_rlimit_nofile 65535

#设置所有worker进程最大可以打开的文件数,默认为1024

2.I/O事件配置

events {

? ? ? ? ?? use epoll;

? ? ? ? ? #使用 epoll I/0模型,2.6及以上版本的系统内核,建议使用epoll模型以提高nginx性能

? ? ? ? ?? worker_connections 65535;

? ? ? ? ? #设置进程连接数,每个进程处理 65535 个连接

}

#永久设置可打开最大文件数 vim /etc/security/limits.conf nginx hard nofile 10000 用户名 硬限制 最大进程数 进程数

ulimit -a #查看可同时打开文件数

3、HTTP 配置

http {
? ??##文件扩展名与文件类型映射表
? ? ? ? ?include ???? mime.types;
? ?##默认文件类型
? ? ? ? ?default_type application/octet-stream;
? ?##日志格式设定

???#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
???# ?????????????? '$status $body_bytes_sent "$http_referer"
???# ?????????????? '"Shttp_user_agent" "$http_x_forwarded_for"' ;
???

? ? ##访问日志位置
? ? #access_log logs/access.log ?main;
??

? ? ##支持文件发送(下载)
? ? sendfile ??on;
? ? ##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
? ? #tcp_nopush ?on;
???

? ?##连接保持超时时间,单位是秒
???#keepalive_timeout 0;
? ? ?keepalive_timeout 65;
???

? ##gzip模块设置,设置是否开启gzip压缩输出
? ? ?#gzip on;
?
???##Web服务的监听配置
???server {
? ? ? ?

? ? ? ? ? ? ##监听地址及端口
? ? ? ? ? ? ? ?listen 80;
???????

? ? ? ? ? ?##站点域名,可以有多个,用空格隔开
? ? ? ? ? ? ?server name www.kgc.com;
???????

? ? ? ? ?? ##网页的默认字符集
? ? ? ? ? ?? charset utf-8;
??????

? ? ? ? ? ?##根目录配置
? ? ? ? ? ? ? location / {
? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ##网站根目录的位置/usr/local/nginx/html
? ? ? ? ? ? ? ? ? ? ? root html ;
? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ?##默认首页文件名
? ? ? ? ? ? ? ? ? ? ? index index.html index.php;
? ? ? ? ? ? ? ?? }
? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ##内部错误的反馈页面
? ? ? ? ? ? ?? ?error_page 500 502 503 504 /50x.html;
? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ##错误页面配置
? ? ? ? ? ? ? ??location = /50x.html {
? ? ? ? ? ? ? ? ?root html;
? ? ? ? ? ? ? ?}
? ? ?? }
}
?

日志格式设定:

$remote_addr(记录的是上个节点的ip)与$http_x_forwarded_for(会记录数据包经过的所有的ip)用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url路径与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小(响应体大小);

$http_referer:用来记录从哪个页面链接访问过来的(如果数据包经过转发他会记录下

来);

$http_user_agent:记录客户浏览器的相关信息;

nginx的root和alias指定路径的区别

root:根目录

location ?/test {

? ? ? ? root/var/www;

}

处理方式:root路径+location路径 ?

?http://192.168.116.40/test/abc.html ? ——> /var/www/test/abc.html

alias:虚拟目录、别名目录

location/test ?{

? ? ? ? ?alias /var/www;
?
}

处理方式:alias路径替换location路径 ?

http://192.168.116.40/test/abc.html ———>/var/www/abc.html

nginx访问状态统计

1.安装时添加--with-http_stub_status_module模块

2.修改nginx配置文件添加stub_status on; (开启状态统计功能) access_log 0ff;配置

3测试验证curl -Ls xxx

nginx 授权访问控制

安装htp

1.使用htpasswd生成用户认证文件,并修改权限和归属

2.修改nginx配置文件添加auth_basic auth_basic_user_file(指定认证文件路径)配置

3.测试验证

nginx客户端访问控制

http{ } :所有站点生效

server{ }:只在当前站点中生效

location{ }:只在当前站点的指定URL路径进行生效

在他们中添加配置

白名单:allow ip/网段(一行只能配置一个ip或者网段)

deny all

黑名单:deny ip/网段

nginx虚拟主机:server { }

基于域名:server_name

基于ip:listen ip:端口(根据不同的ip)

基于端口:listen ip:端口(根据不同的端口)

文章来源:https://blog.csdn.net/HanYuHao11/article/details/134901567
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。