linux Nginx服务配置介绍,和配置流程

1、Nginx 配置介绍

认识Nginx服务的主配置文件 nginx.conf

nginx的配置文件一般在 /usr/local/nginx/conf/下,然后直接vim nginx.com 即可编辑

1.1 全局配置介绍

全局配置位于主配置文件最顶部,作用于整个Nginx服务进程,影响服务的资源分配、运行权限等基础属性

我、分别解释一下其中配置的含义

#user nobody; #运行用户,若编译时未指定则默认为 nobody

worker_processes 4; #工作进程数量,可配置成服务器内核数 * 2,如果网站访问量不大,一般设为1就够用了

#error_log logs/error.log; #错误日志文件的位置

#pid logs/nginx.pid; #PID 文件的位置

1.2 I/O 事件配置介绍

I/O事件配置位于`events {}`块中,用于定义Nginx处理网络连接的方式,直接影响服务的并发处理能力。分别解释一下其中的含义

events {

use epoll; # epoll 模型2.6及以上版本的系统内核,使用epoll模型可以以提高性能

worker_connections 4096; #每个进程处理 4096 个连接

}

如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。

在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。

/etc/security/limits.conf

epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

若工作进程数为 8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接数

已超过 3 万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性

能表现。

1.3 HTTP 配置介绍

HTTP配置位于`http {}`块中,是Web服务的核心配置区域,定义HTTP协议相关的全局参数、虚拟主机、缓存策略等

使用"http { }"界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保 持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包 含在子界定标记"server { }"内

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" '

'"http_user_agent" "http_x_forwarded_for"'; ## 日志格式设定

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

sendfile on; ##支持文件发送( 下载) tcp_nopush on; ##与sendfile配合使用,合并数据包发送

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

gzip on; # gzip模块设置,设置是否开启gzip压缩输出

1.4 Web 服务的监听配置介绍

监听配置位于`server {}`块中,用于定义虚拟主机的访问入口,包括监听端口、域名绑定等

server {

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

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

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

location / { ##根目录配置

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

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

}

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

location = /50x.html { ##错误页面配置

root html;

1.4 其他配置介绍

除核心配置外,Nginx还支持多种扩展配置,满足不同业务场景需求

日志格式设定

remote_addr与http_x_forwarded_for用以记录客户端的ip地址;

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

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

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

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

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

$http_referer:用来记录从哪个页面链接访问过来的;

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

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令,root、alias、proxy_pass

root(根路径配置):root /var/www/html

请求www.benet.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置):alias /var/www/html

请求www.benet.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

2.nginx 虚拟主机配置流程

2.1 访问状态统计配置

1 查看已安装的所有模块

先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块

2 修改 nginx.conf 配置文件

修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

1.进入 cd /usr/local/nginx/conf目录下然后先备份nginx文件,输入cp nginx.conf nginx.conf.bak

然后进入nginx.conf进行配置 vim /usr/local/nginx/conf/nginx.conf

然后在http {}`块中更改一下设置

http {

......

server {

listen 80;

server_name 10.0.0.250; #在这里可以输入你自己的ip地址或域名

charset utf-8;

location / {

root html;

index index.html index.htm;

}

然后在后面添加 stub_status 配置

location /status { #访问位置为/status

stub_status on; #打开状态统计功能

access_log off; #关闭此位置的日志记录

}

}

}

配置完成可以重启服务

3 重启服务,访问测试

输入nginx -t 进行检查,然后重启nginx服务,输入:systemctl restart nginx

然后浏览器访问 http://10.0.0.250/status

Active connections :表示当前的活动连接数;

server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。

可 curl -s http://10.0.0.250/status 结合 awk与if 语句进行性能监控。

3. 基于授权的访问控制流程

1.先安装httpd-tools服务输入 yum install -y httpd-tools

2.然后创建用户名密码文件,输入:htpasswd -c /usr/local/nginx/passwd.db fyl(这里输入你想输入的用户名)然后新建密码

3.将密码文件所有权直接交给nginx用户 输入 chown nginx /usr/local/nginx/passwd.db

4.给文件赋予权限 chmod 400 /usr/local/nginx/passwd.db

5 修改主配置文件相对应目录,添加认证配置项

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

在 location / 下添加认证配置

auth_basic "secret"; #设置密码提示框文字信息

auth_basic_user_file /usr/local/nginx/passwd.db;

6.重启服务,访问测试

nginx -t systemctl restart nginx

浏览器访问 http://192.168.10.21,输入刚才的用户名和密码

然后登入即可

4.基于客户端的访问控制

访问控制规则如下:

deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。

allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。

规则从上往下执行,如匹配则停止,不再往下匹配。

vim /usr/local/nginx/conf/nginx.conf 进入编辑

在 location /下添加一下规则

##添加控制规则##

allow 10.0.0.250; #允许访问的客户端 IP

deny all; #拒绝其它IP客户端访问

systemctl restart nginx,nginx -t 检查并重启,然后访问10.0.0.250

然后发现其他ip登入没有权限,只有10.0.0.025才有

5. 基于域名的 Nginx 虚拟主机流程

  1. 为虚拟主机提供域名解析

echo "10.0.0.250 www.yjs.com www.fyl.com" >> /etc/hosts

  1. 为虚拟主机准备网页文档输入,以下命令

mkdir -p /usr/local/nginx/html/fyl

mkdir -p /usr/local/nginx/html/yjs

echo "<h1>www.yjs.com</h1>" > /usr/local/nginx/html/fyl/index.html

echo "<h1>www.fyl.com</h1>" > /usr/local/nginx/html/yjs/index.html

  1. 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf 进入配置文件进行修改

......

http {

......

server {

listen 80;

server_name www.yjs.com; #设置域名www.yjs.com

charset utf-8;

access_log logs/www.yjs.access.log; #设置日志名

location / {

root /usr/local/nginx/html/yjs/; #设置www.yjs.com 的工作目录

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

server {

listen 80;

server_name www.fyl.com; #设置域名www.fyl.com

charset utf-8;

access_log logs/www.benet.access.log;

location / {

root /usr/local/nginx/html/fyl/;

index index.html index.php;

}

error_page 500 502 503 504 /50x.html;

location = 50x.html{

root html;

}

}

4.重启服务,访问测试

systemctl restart nginx,ngint -t

浏览器访问

http://www.yjs.com

http://www.fyl.com

6 基于IP 的 Nginx 虚拟主机配置

1先创建一个新网卡 ens36

  1. 配置server 1 www.yjs.com设置地址为10.0.0.240:80

配置server www.fyl.com设置地址为10.0.0.250:80

server {

listen 10.0.0.250:80; #设置监听地址10.0.0.250

然后检查重启nginx服务,然后浏览器访问

http://10.0.0.240

http://10.0.0.250

7 基于端口的 Nginx 虚拟主机

1.进入 vim /usr/local/nginx/conf/nginx.conf设置,然后将www.yjs.com 的端口设置为80

......

http {

......

server {

listen 10.0.0.240:8080; #设置监听 8080 端口

server_name www.yjs.com;

charset utf-8;

2.将www.fyl.com的端口设置为8888

server {

listen 10.0.0.250:8888; #设置监听 8888 端口

server_name www.fyl.com;

3 重启服务,测试访问

systemctl restart nginx -t​

浏览器访问测试

http://192.168.10.21:8080

http://192.168.10.21:8888

相关推荐
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
七夜zippoe9 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥9 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网9 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊12110 小时前
已有安全措施确认(上)
大数据·网络
Fcy64810 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满10 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠11 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥11 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey90311 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s