【Nginx网站服务】
安装Nginx服务
1.先去官网下载软件包
2.关闭防火墙,将安装nginx所需软件包传到/opt目录下
systemctl stop firewalld
systemctl disable firewalld
setenforce 0nginx-1.18.0.tar.gz
nginx-1.22.0.tar.gz
3.安装依赖包
#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。
yum -y install pcre-devel.x86_64 zlib-devel.x86_64 openssl-devel.x86_64 gcc gcc-c++ make
4.创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx
5.编译安装Nginx
cd /opt
tar zxvf nginx-1.18.0.tar.gz -C /opt/cd nginx-1.18.0/
./configure \
--prefix=/usr/local/nginx \ #指定nginx的安装路径
--user=nginx \ #指定用户名
--group=nginx \ #指定组名
--with-http_stub_status_module #启用 http_stub_status_module 模块以支持状态统计
操作make -j 4 && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
6.检查、启动、重启、停止 nginx服务
nginx有两种进程:
master进程(主进程):管理工作进程,启动时读取配置文件
worker进程(工作进程):处理用户连接请求
/usr/local/sbin/nginx #启动nginx,使用绝对路径或者绝对路径nginx -t #检查配置文件是否配置正确
#启动
nginx扩展#停止
cat /usr/local/nginx/logs/nginx.pid #先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
#日志分割,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号>
kill的相关编号
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 “Ctrl+C” 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号 |
7.升级版本号
tar -zxvf nginx-1.xx.xx.tar.gz 1.22.0
cd nginx-1.xx.xx
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_modulemake -j4 #不要make install 生成二进制文件在objs中mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old 备份
cp objs/nginx /usr/local/nginx/sbin/nginx
8.添加nginx服务
如果在添加之前服务已经打开,需要先关服务,在添加打开
方法一:
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 99 20 // 这是固定格式,2345表示运行级别,之后为开机执行顺序和关机执行顺序
#description:Nginx Service Control Script //这也是必须的
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)$COM
;;stop)kill -s QUIT $(cat $PID)
;;restart)$0 stop$0 start
;;reload)kill -s HUP $(cat $PID)
;;*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1esac
exit 0chmod +x /etc/init.d/nginx
chkconfig --add nginx #添加为系统服务
systemctl stop nginx
systemctl start nginxservice nginx start|stop|restart|reload
系统服务 服务名称 启动模式
方法二:
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]WantedBy=multi-user.target[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定
PIDFile以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径[Install]服务安装的相关设置,可设置为多用户chmod 754 /lib/systemd/system/nginx.servicesystemctl start nginx.service
systemctl enable nginx.service
认识Nginx服务的主配置文件 nginx.conf
vim /usr/local/nginx/conf/nginx.conf #配置文件
1.全局配置
#user nobody; #运行用户,若编译时未指定则默认为 nobody
worker_processes 1; #工作进程数量,可配置成服务器内核数 * 2,如果网站访问量不大,一般设为1就够用了
#error_log logs/error.log; #错误日志文件的位置
#pid logs/nginx.pid; #PID 文件的位置
2.I/O 事件配置
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),当然具体还要看服务器硬件、网络带宽等物理条件的性
能表现。
3.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;##此选项允许或禁止使用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/htmlroot html;##默认首页文件名index index.html index.php;}##内部错误的反馈页面error_page 500 502 503 504 /50x.html;##错误页面配置location = /50x.html {root html;}}
}
----------------------------------------------------------------------------------------------------------
日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_addr:用来记录上一级的ip地址
$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(根路径配置):local /abc {root /var/www/html;
}
http://www.accp.com/abc/test.html -->/var/www/html/abc/test.htmlalias(别名配置):local /abc {alias /var/www/html;
}
http://www.accp.com/abc/test.html -->/var/www/html/test.htmlproxy_pass(反向代理配置)
访问状态统计配置
1.查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块
先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块
cat /opt/nginx-1.22.0/auto/options | grep YES #可查看 nginx 已安装的所有模块
2.修改 nginx.conf 配置文件,指定访问位置并添加
stub_status 配置
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim /usr/local/nginx/conf/nginx.conf
......
http {......server {listen 80;server_name www.kgc.com;charset utf-8;location / {root html;index index.html index.php;}##添加 stub_status 配置##location /status { #访问位置为/statusstub_status on; #打开状态统计功能access_log off; #关闭此位置的日志记录}}
}
每十秒执行一次,监控Nginx的并发数
基于授权的访问控制
1.生成用户密码认证文件
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db
2.修改主配置文件相对应目录,添加认证配置项
vim /usr/local/nginx/conf/nginx.conf
......server {location / {......##添加认证配置##auth_basic "secret"; #设置密码提示框文字信息auth_basic_user_file /usr/local/nginx/passwd.db;}}
3.重启服务,访问测试
nginx -t
systemctl restart nginx浏览器访问 http://192.168.22.10
基于客户端的访问控制
访问控制规则如下:
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。vim /usr/local/nginx/conf/nginx.conf
......server {location / {......##添加控制规则##allow 192.168.22.10; #允许访问的客户端 IPdeny all; #拒绝其它IP客户端访问}}systemctl restart nginx
192.168.22.10可以访问
用别的ip访问会出现403(加入了黑名单,拒绝访问)
基于域名的 Nginx 虚拟主机
1.为虚拟主机提供域名解析
echo "192.168.22.10 www.kgc.com www.benet.com" >> /etc/hosts
2.为虚拟主机准备网页文档
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/kgc
echo "<h1>www.kgc.com</h1>" > /var/www/html/kgc/index.html
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
3.修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name www.kgc.com; #设置域名www.kgc.comcharset utf-8;access_log logs/www.kgc.access.log; #设置日志名location / {root /var/www/html/kgc; #设置www.kgc.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.benet.com; #设置域名www.benet.comcharset utf-8;access_log logs/www.benet.access.log;location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}
4.重启服务,访问测试
systemctl restart nginx
5.浏览器访问
http://www.kgc.com
http://www.benet.com
基于IP 的 Nginx 虚拟主机
1.添加一张虚拟网卡
ifconfig ens33:0 192.168.22.18/24
2.修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.22.10:80; #设置监听地址192.168.22.10:80server_name www.kgc.com;charset utf-8;access_log logs/www.kgc.access.log; location / {root /var/www/html/kgc;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}1}server {listen 192.168.22.18:80; #设置监听地址192.168.22.18server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log; location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}
3.重启服务,并测试访问
systemctl restart nginx浏览器访问
http://192.168.146.20
http://192.168.146.21
基于端口的 Nginx 虚拟主机
1.修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.22.10:666; #设置监听 666 端口server_name www.kgc.com;charset utf-8;access_log logs/www.kgc.access.log; location / {root /var/www/html/kgc;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 192.168.22.10:888; #设置监听 888 端口server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log; location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}
2.重启服务,并访问测试
systemctl restart nginx浏览器访问
http://192.168.146.20:666
http://192.168.146.20:888
【Nginx网站服务】相关推荐
- Nginx网站服务与LNMP架构部署(详解)
Nginx网站服务与LNMP架构部署 1.Nginx服务基础 2.编译安装Ngiax 3.Nginx的运行控制 4.配置文件nginx.conf 5.Nginx虚拟主机 6.LNMP架构部署 1.源码 ...
- nginx 根据目录指定root_部署Nginx网站服务实现访问状态统计以及访问控制功能
Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物理服务器可支持30000-50000个并发请求. Nginx的安装文件可以从官方网站h ...
- Web服务器群集--Nginx网站服务(运行控制,访问状态统计,基于授权和客户端的访问控制,基于域名,端口,IP的虚拟web主机访问)
文章目录 前言 一:Nginx服务基础 1.1:Nginx概述 1.2:Nginx编译安装(过程) 1.3:运行控制(实验过程) 1.4:配置文件nginx.conf 1.5:Nginx的访问状态统计 ...
- 回顾Nginx网站服务配置
Nginx简介 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器.Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.r ...
- Nginx网站服务(安装nginx、平滑升级nginx、nginx各种访问配置)
文章目录 一.Nginx概述 1.什么是nginx? 2.Nginx应用场景 3.Nginx应用企业 4.nginx的HTTPD七层代理和四层代理 二.Nginx和Apache的区别 三.编译安装Ng ...
- 企业常用的Nginx网站服务相关配置
目录 一,内容概述 Nginx Apache 二,Apache三种工作模式 三,Linux的I/O 四,编译安装Nginx服务 五,认识 Nginx 服务的主配置文件 nginx.conf 六,访问状 ...
- Nginx网站服务配置(Nginx服务基础,访问状态统计,访问控制,虚拟主机)
编译安装Nginx服务 关闭防火墙,将安装 ngnix 所需的软件包上传到 /opt 目录下 安装依赖包 编译安装Nginx 创建运行用户.组 检查.启动.重载配.停止Nginx 增加Nginx系统服 ...
- 企业常用的Nginx网站服务相关配置——极其详细
文章目录 一.Nginx概述 二.编译安装Nginx编译安装 1.关闭防火墙,将安装 ngnix 所需的软件包上传到 /opt 目录下 2.安装依赖包 3.创建运行用户.组 4.编译安装Nginx 5 ...
- 企业中常用的Nginx网站服务相关配置
文章目录 前言: 一.Nginx概述 二.编译安装Nginx 服务 三.认识 Nginx 服务的主配置文件 nginx.conf 四.访问状态统计配置 五.基于授权的访问控制 六.基于客户端的访问控制 ...
- Nginx网站服务配置
目录 一.Nginx概述 二.编译安装nginx服务 2.1 关闭防火墙,将nginx所需压缩包上传到/opt目录下 2.2 安装依赖包 2.3 创建运行用户和组,便于管理 2.4 解压软件包,编译安 ...
最新文章
- python去实现链表_python实现链表
- JAVA中的Font
- 什么是Incremental Link Table[转]
- anemometer mysql_MySQL慢日志简介及Anemometer工具介绍 | | For DBA
- 全站仪与计算机之间的数据传输,必看!全站仪数据传输的三种方式详解,都安排得明明白白(上)...
- java经纬度凸包graham_计算几何-凸包-Graham算法
- 【写作技巧】本科毕业论文开题报告写作攻略
- 刚刚创业的你 这几点让你的公司不断前进
- 使用CrossFTP跨越不同站点复制/移动数据
- 易编远航第七套大漠多线程多开入门高级篇
- jpa的好伙伴QueryDSL快速入门
- HBase二级索引的设计
- Git, Gitlab使用文档
- NRF2401使用详细说明
- 仓储室内定位系统—企业物流的“数字化”转型
- Pyqt设计界面时无法显示图片问题
- MarkDown基本语法(标题,字体,引用,分割线、插入图片,超链接,列表,表格,插入代码标段)
- java 获取当前时间所在自然周起止时间及自然周中的每一天
- 2021-12-25 《聪明的投资者》学习笔记-18.对八组公司的比较
- 软件设计的哲学:第十六章 修改现有代码