⭐本栏专为小白准备,属科普、基础、简单操作


🌞七斤是个新手博主,如发现错误还请各位指教,及时更正

Nginx 概述

Nginx 是一个网站架设软件,与 Apache 一样可以完成网站架设。由俄罗斯程序设计师 Igor Sysoev 开发。目前新浪、网易、腾讯、Plurk 等都在使用。

Nginx,发音为[engine x],专为性能优化而开发,其最知名的优点是它的稳定性和低系 统资源消耗,以及对 HTTP 并发连接的高处理能力,单台物理服务器可支持 30000~50000 个 并发请求。

正因如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择 Nginx 来提供 Web 服务。

详见 Nginx 官方网站:​​http://nginx.org​

Nginx 优点

轻量级,同样架设 Web 服务,比 Apache 占用更少的内存及资源

高并发,Nginx 处理请求是异步非阻塞的,而 Apache 则是阻塞性的,在高并发下 Nginx 能保存低资源消耗高性能

高度模块化的设计,编写模块相对简单

可作为负载均衡服务器,支持 7 层负载均衡

静态处理性能比 Apache 高 3 倍以上,但动态处理不足,需要通过后端服务器支持,如 Apache

Nginx 的安装与控制

源码包安装 Nginx

#安装依赖包
[root@nginx-server ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make

#创建运行用户、组
[root@nginx-server ~]# useradd -M -s /sbin/nologin nginx

#下载nginx源码包
[root@nginx-server ~]# wget http://nginx.org/download/nginx-1.12.0.tar.gz

#解压
[root@nginx-server ~]# tar -xvf nginx-1.12.0.tar.gz -C /usr/src/

#进入源码目录
[root@nginx-server ~]# cd /usr/src/nginx-1.12.0/

#预编译以及安装
[root@nginx-server nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install

--with-http_stub_status_module:加载日志统计模块

#为主程序 nginx 创建链接文件
[root@nginx-server ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

echo "export PATH=$PATH:/usr/local/nginx/sbin/" >>/etc/profile
source /etc/profile

Nginx 的运行控制方法

手动方法控制 Nginx:

nginx -t 检测配置文件语法

执行 nginx 主程序启动 Nginx

[root@nginx-server ~]# nginx -t 
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#启动服务
[root@nginx-server ~]# nginx

[root@nginx-server ~]# netstat -utpnl |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18174/nginx: master

#安装killall命令,killall命令用于管理nginx
[root@nginx-server ~]# yum -y install psmisc

#重启nginx
[root@nginx-server ~]# killall -s HUP nginx

[root@nginx-server ~]# nginx -s reload
#正常停止nginx
[root@nginx-server ~]# killall -s QUIT nginx

[root@nginx-server ~]# nginx -s stop

#nginx日志切换,也就是重新打开一个日志文件
[root@nginx-server ~]# killall -s USR1 nginx

配置Nginx虚拟主机

虚拟主机网站根目录

1)创建网站根目录

[root@nginx-server ~]# mkdir -p /www/xiaocom
[root@nginx-server ~]# mkdir -p /www/com

2)设置网站主页

[root@nginx-server ~]# echo "www.xiao.com" > /www/xiaocom/index.html
[root@nginx-server ~]# echo "www.cheng.com" > /www/chengcom/index.html

修改Nginx主配置文件支持虚拟主机配置

修改Nginx主配置文件 
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.xiao.com; //第一个虚拟主机
harset utf-8; //字符编码
access_log logs/www.xiao.com.access.log; //日志
location / {
root /www/xiaocom/; //网站根目录
index index.html index.htm; //网站主页
}
}
server {
listen 80;
server_name www.cheng.com;
charset utf-8;
access_log logs/www.cheng.com.access.log;
location / {
root /www/chengcom/;
index index.html index.htm;
}
}
}
检查主配置文件是否错误 
nginx -t
重启Nginx服务
killall nginx
nginx

扩展:调取​​nginx​​的进程号

ps -ef |grep nginx |awk 'NR==1 {print $2}'    //取nginx的主进程号
ps -ef |grep nginx |awk 'NR==2 {print $2}' //取nginx的工作进程号

Nginx 配置文件分析

全局配置

由各种配置语句组成,不使用特定的界定标准,设置 Nginx 服务的运行用户、工作进程数、错误日志、PID 存放位置等。

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

web服务器上如何配置安装nginx?_Nginx

扩展:查看cpu核数

web服务器上如何配置安装nginx?_虚拟主机_02

I/O 事件配置

用“events{ }”界定,指定 Nginx 进程的 I/O 响应模式、每个进程的连接数等。2.6 及以上版本的内核,建议使用 epoll 模型以提高性能;每个进程的连接数应根据实际需求来定, 一般在 10000 以下,默认 1024。

12 events {
13 use epoll; //手动添加
14 worker_connections 10240;
15 }

use epoll;:用来设定nginx的工作模式。nginx的工作模式有select、poll、kqueue、epoll、 rtsig和/dev/poll 其中select、poll是标准工作模式,kqueue、epoll是高效工作模式。不同是: epoll 用于 linux 内核,kqueue 用于 BSD 系统。对于 epoll 是 linux 的首选参数.

worker_connections 10240;:用于定义 nginx 每个进程的最大连接数,默认是 1024

最大的 客户端连接数:worker_processe(2)×worker_connection( 10240)= max_client(20480)。

进程的最大连接数受进程的最大打开文件数量限制。需执行 ulimit -n 65536

HTTP 配置及虚拟主机设置

用“http{ }”界定,设置访问日志、HTTP 端口、网页目录、默认字符集、连接保持、虚 拟 Web 主机、PHP 解析等,server{ }配置段设置特定的网址。

web服务器上如何配置安装nginx?_nginx_03

web服务器上如何配置安装nginx?_nginx_04

HTTP 配置项说明

· access_log 指定访问日志位置

· sendfile 是否支持文件发送(下载)

· keepalive_timeout 连接保持超时

· listen 80 监听地址及端口

· server_name 设置网址名称(FQDN)

· location 根目录配置

· root 网站根目录的位置

· index 默认首页(索引页)

· error_page 内部错误的反馈页面