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网站基础服务的主要内容,如果未能解决你的问题,请参考以下文章

interview

XSS基础学习

iphone / Objective c的最佳代码片段网站是啥[重复]

JSP基础

[vscode]--HTML代码片段(基础版,reactvuejquery)

vs2003:快速片段工具