Nginux网站基础服务
Posted kiroct
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginux网站基础服务相关的知识,希望对你有一定的参考价值。
nginx网站服务
Nginx概述:
一款高性能,轻量级的web服务软件
稳定性高
系统资源消耗低
对HTTP并发连接处理能力高
单台物理服务器可以支持30000~50000个并发请求
Nginx相对于Apache的优点:
轻星级,同样是web服务,比Apache 占用更少的内存及资源;高并发,Nginx 处理请求是异步非塞的,而Apache 则是阻塞型的,在高并发下Nginx能保持低资源低消耗高性能;高度模块化的设计
编写模块相对简单;社区活跃,各种高性能模块出品迅速。
Apache相对于Nginx的优点:
rewrite,比Nginx 的rewrite强大;模块超多,基本想到的都可以找到;少bug , Nginx 的bug相对较多;超稳定存在就是理由,- -般来说,需要性能的web服务,用Nginx。如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,- 般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。
Nginx和Apache的差异
Nginx是一个甚于事件的Web服务器,Apache是一个基于流程的服务器;
Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;
Nginx避免子进程的概念,Apache是基于子进程的;
Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;
Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
Nginx支持热部署,Apache不支持热部署;
Nginx对于静态文件处理具有更高效率, Apache相对一般;
Nginx在反向代理场景具有明显优势,Apache相对一般。
安装Ngiux
1、首先关闭防火墙、啥的
2、把安装包用winscp移动到opt
3、yum本地安装相应的依赖包
```html/xml
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
![2安装所需软件包.png](https://s2.51cto.com/images/20220108/1641613982406371.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
4、创建Nginux的程序用户
5、编译安装Nginux
cd /opt
tar zxvf nginx-1.12.2.tar.gz -C /opt/
cd nginx-1.12.2/
![4、解压完成后我们进入安装包.png](https://s2.51cto.com/images/20220108/1641614126370853.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![4、挑转到opt目录,解压这个文件.png](https://s2.51cto.com/images/20220108/1641614133540728.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
![5进行编译.png](https://s2.51cto.com/images/20220108/1641614184995345.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
./configure \\
--prefix=/usr/local/nginx \\
--user=nginx \\
--group=nginx \\
--with-http_stub_status_module
4核心编译安装
make -j 4 && make install
![5 4核心编译安装.png](https://s2.51cto.com/images/20220108/1641614165753658.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
然后我们创建程序用户nginx
![3、创建程序用户.png](https://s2.51cto.com/images/20220108/1641614107405443.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
6、制作软连接,让系统识别Nginx的指令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
![6 制作系统识别的软连接来识别指令.png](https://s2.51cto.com/images/20220108/1641614209551346.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
7、nginx日常操作
nginx -t #检查是否配置完毕
![6、检查是否安装完毕.png](https://s2.51cto.com/images/20220108/1641614241495712.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
nginx #启动nginx
如何停止nginx
首先去文件查看进程号
cat /usr/local/nginx/logs/nginx.pid
然后我们使用:
kill -3 PID号
#-3 是等待进程结束后杀死进程,防止数据丢失
或者
kill -s QUIT nginx
如何重载nginx
kill -1 nginx
#-1是重载操作
日志分割、重新打开日志文件与平滑升级
![补充:如何新版本升级(建议平滑升级).png](https://s2.51cto.com/images/20220108/1641614360361329.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
kill -USR1 <PID号> #日志分割、重新打开日志
kill -USR2 <PID号> #平滑升级
8、添加nginx系统服务
首先是cd /etc/init.d/
然后是vim nginx 输入以下shell代码
```shell
#!/bin/bash
#chkconfig: 35 99 21
#desc: this is used for control nginx service
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case $1 in
start)
$COM
;;
stop)
kill -3 `cat $PID`
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP `cat $PID`
;;
status)
tmp=`ps -ef | grep nginx | egrep -cv "grep|$$"`
if [ "$tmp" -le 1 ];then
echo "Nginx 服务未启动"
else
echo "Nginx 服务已启动"
fi
;;
*)
echo "Usage: $0 start|stop|restart|status|reload"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
systemctl stop nginx
systemctl start nginx
认识nginx服务的主配置文件
1、全局块:配置影响nginx全局的指令。一 般有运行nginx服务器的用户组,nginx进程pid存放路径, 日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块: 可以嵌套多个server, 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime- type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块: 配置虚拟主机的相关参数,一个http中可以有多个server.
5、location块: 配置请求的路由,以及各种页面的处理情况。
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/0 事件配置
events
use epoll; #使用epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
worker_ connections 4096; #每个进程处理4096 个连接
}
#如提高每个进程的连接数还需执行“ulimit-n65535”命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单--进程同时可打开文件数量的限制(这是因为系统
为每个TCP连接都要创建一个socket句柄, 每个socket句柄同时也是一一个文件句柄)。
#可使用ulimit-a命令查看系统允许当前用户进程打开的文件数限制。
#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux 下多路复用I0接口select/pol1的增强版本,它能显著的减少程序在大量并发
连接中只有少量活跃的情况下的系统CPU利用率。
3.HTTP配置
http
##文件扩展名与文件类型映射表
include mime. types;
##默认文件类型
##日志格式设定
#log_ format main $remote_ _addr - $remote_ user [$time_ local] "Srequest"
# . $status $body_ bytes_ sent "$http_ referer"
# "$http_ user_ agent" "$http_ x_ forwarded for";
##访问日志位置
#access_ 1og logs/access.1og main;
##支持文件发送(下载)
sendfile on;
##此选项允许或禁止使用socket的TCP__CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
#tcp_ nopush on;
##连接保持超时时间,单位是秒
#keepalive_ t imeout 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;
日志格式设定:
$remotel 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. kgc . com/test/1.html,会返回文件/var/www/html/ test/1. html
alias (别名配置) : alias /var/www/html
请求www. kgc . com/test/1.html,会返回文件/var/www/html/1. html
访问状态统计配置
1.先使用命令/usr/local/nginx/sbin/nginx -V查看已安装的Nginx 是否包含,HTTP STUB STATUS模块
cat /opt/nginx-1.12.2/auto/options I grep YES #可查看nginx已安装的所有模块
2.修改nginx.conf 配置文件,指定访问位置并添加stub_ status 配置
ln -s /usr/local/nginx/conf/nginx.conf /etc #做软连接方便修改
vim /etc/nginx.conf
如下文代码更改(模板)
location /status
stub_status on;
access_log off;
curl -Ls http://192.168.206.10/status
#完成验证统计
基于授权登录的访问控制
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.修改主配置文件相对应目录,添加认证配置项
3.重启服务,访问测试
nginx -t
systemctl restart nginx
然后登陆即可
以上是关于Nginux网站基础服务的主要内容,如果未能解决你的问题,请参考以下文章
iphone / Objective c的最佳代码片段网站是啥[重复]