Nginx简介 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。高性能:其占用内存少、并发能力强、能支持高达 5w 个并发连接数。
编译安装nginx服务
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y gcc pcre-devel zlib-devel gcc-c++ make
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar -xf nginx-1.20.2.tar.gz
[root@localhost ~]# cd nginx-1.20.2/
root@localhost nginx-1.20.2]# ./configure \
> --prefix=/usr/local/nginx \ #指定安装路径
> --user=nginx \ #指定用户
> --group=nginx \ #指定组
> --with-http_ssl_module \ #开启SSL加密功能
> --with-http_stub_status_module\ #启用http_stub_status_module 模块以支持状态统计
> --with-stream #启用四层反向代理
[root@localhost nginx-1.20.2]# make && make install #编译并安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #让系统识别nginx命令
nginx #启动服务
nginx -s stop #关闭服务
nginx -s reload #重新加载配置文件
nginx -v #查看软件信息
新版本升级:
tar -xf nginx-1.xx.xx.tar.gz #解压新版本nginx安装包
cd nginx-1.xx.xx #进入目录
./configure\
--prefix=/usr/local/nginx \
--user=nginx\
--group=nginx \
--with-http_stub_status_module \ #加入新的模块
--with-http_ssl_module
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old #备份nginx老版本主程序
cp objs/nginx /usr/local/nginx/sbin/nginx #使用编译好的新版本nginx替换老版本
make upgrade #重启
#或者先 killall nginx,再/usr/local/nginx/sbin/nginx
Nginx服务的主配置文件 nginx.conf
•全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
•events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
•http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
•server块: server块,虚拟主机(虚拟服务器)。作用:使得Nginx服务器可以在同一台服务器上只要运行一组Nginx进程,就可以运行多个网站。
•location块: location块是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理。
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
•全局块:
#user nobody; #运行用户
worker_processes 1; #工作进程数,可配置成服务器内核数*2,如果网站访问量不大,一般设为1就够用了
#error_log logs/error.log; #错误日志文件的位置
#pid logs/nginx.pid; #PID文件的位置
•events块:
events {
use epoll; #使用 epoll 模型以提高性能,2.6 以上版本建议使用
worker_connections 1024; #每个进程处理1024个连接
}
#如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。
•http块:
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;
#keepalive_timeout 0;
keepalive_timeout 65; #连接保持超时时间,单位是秒
#gzip on; #gzip模块设置,设置是否开启gzip压缩输出
•server块+location块:
server {
listen 80;#监听地址及端口
server_name localhost;#站点域名,可以有多个,用空格隔开
#charset utf-8; #网页的默认字符集
#access_log logs/host.access.log main;
location / {
root html; #网站根目录的位置/usr/local/nginx/html
index index.html index.htm; #默认首页文件名
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #内部错误的反馈页面
location = /50x.html { #错误页面配置
root html;
}
访问状态统计配置
nginx 内置了 HTTP_STUB_STATUS 状态统计模块,用来反馈当前的 Web 访问情况, 配置编译参数时可添加--with-http_stub_status_module 来启用此模块支持,可以使用命令
可以使用命令nginx –v 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块。
操作步骤:
修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
location /status { ##访问位置为/status
stub_status on; ##打开状态统计功能
access_log off; ##关闭此位置的日志记录
}
授权密码的访问控制
#设置密码文件
htpasswd -c /usr/local/nginx/passwd.db zhangsan
htpasswd /usr/local/nginx/passwd.db lisi #第二个用户不用加-c,会覆盖
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db
location /status {
#添加密码认证
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
# stub_status on;
# access_log off;
root html;
index index.html index.htm;
}
虚拟主机
利用虚拟主机,不用为每个要运行的网站提供一台单独的 Nginx 服务器或单独运行一 组 Nginx 进程,虚拟主机提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功 能。跟 Apache 一样,Nginx 也可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、 基于域名的虚拟主机、基于端口的虚拟主机。 使用 Nginx 搭建虚拟主机服务器时,每个虚拟 Web 站点拥有独立的“server{}”配置段, 各自监听的 IP 地址、端口号可以单独指定,当然网站名称也是不同的。
基于域名、端口、IP 的虚拟主机的配置
•域名
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name www.kgc.com; #可以此域名访问网页
若域名无法使用,需要修改/etc/hosts配置文件或做Dns域名解析
•IP #可以不同ip访问不同网页
vim /usr/local/nginx/conf/nginx.conf
server {
listen 192.168.64.20:80;
server_name localhost;
server {
listen 192.168.64.30:80;
server_name www.benet.com;
•端口
vim /usr/local/nginx/conf/nginx.conf
#可以此ip+不同端口访问不同网页
server {
listen 192.168.59.108:80;
server_name localhost;
server {
listen 192.168.64.10:8080;
server_name localhost;