1. Nginx(engine x) 引擎
属于高性能反向代理服务器,同样也属于高性能http服务器,同时还是IMAP/pos3/SMTP邮件服务器
2. Nginx 特点:
NGinx功能丰富,且稳定,由C语言编写,距离操作系统较劲运行速度较快,消耗资源少,属于轻量级服务,支持高并发
相比Apache对比:
- nginx占用资源少,支持更多的并发连接效率更高,一个成熟的nginx服务器可以提供50000的并发连接响应。
- 负载均衡服务器
nginx支持PHP,可以作为httpd代理服务器进行服务器,用C语言编写效率为Apache要快
- 作为邮件代理服务器
Nginx最高作为邮件服务器使用,性能高于Apache
- 安装简单 在7*24小时高可用状态下,可以进行平滑升级(版本升级)
NGinx在企业中的应用
用在反向代理和负载均衡服务器,还可以用作web服务器,还可以提供前端缓存服务,proxy_cache
3. Nginx 信号控制
使用 kill 命令控制
- TERM,INT 快速关闭
- QUIT 从容关闭
- HUP 平滑重启,重新加载配置问价
- USR1 重新打开日志文件,多用于切割日志
- USR2 平滑升级可执行程序
- WINCH 从容关闭工作进程。
4. 安装Nginx
源码安装Nginx
- 解压Nginx包
[root@localhost ~]# tar -zxf nginx-1.6.0.tar.gz -C /usr/src/
- 解决Nginx依赖包(pcre)
[root@localhost ~]# yum -y install pcre*
- pcre-devel 是一个重定向软件、域名的跳转,为了支持rewrite,实现url的重定向,根据正则表达式进行内容跳转,跳转到指定的目标
- 解决Nginx依赖包(OpenSSL)
[root@localhost ~]# yum -y install openssl*
- 为了使后期可以实现安装证书(443)
- 如果在数据进行传输的过程中没有加密认证,发送的数据很容易被抓包工具获取,容易暴露信息,openssl用于使用证书将传送的数据进行加密保证数据安全,通常要去网站设置ssl证书,实现https协议
- 检测80端口是否开启
- Nginx默认使用80端口,所以要保证Apache没有占用80端口,否则发生冲突
- 如发送冲突,可关闭,如果不可关闭则修改端口号
[root@localhost ~]# netstat -anpt | grep 80
- 创建Nginx运行用户
[root@localhost nginx-1.6.0]# useradd -M -s /sbin/nologin nginx
- 源码安装nginx
[root@localhost ~]# cd /usr/src/nginx-1.6.0/
[root@localhost nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
# --prefix=/usr/local/nginx 指定NGinx安装路径
# --user=nginx 指定程序用户
# --group=nginx 指定程序的用户组
# --with-http_ssl_module 指定https加密模块
# --with-http_spdy_module 支持谷歌spdy 用于减小网络延迟,提高网速
# --with-http_stub_status_module 支持nginx状态检查
# --with-pcre 支持PCRE重写功能
[root@localhost nginx-1.6.0]# make && make install
- 优化路径
- 将 nginx 软连接至 bin
[root@localhost nginx-1.6.0]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
- 修改配置文件
#user nginx nginx; 指定Nginx运行的用户与用户组
worker_processes 1; #开启Nginx工作进程的数量;与CPU核心数有关;不能超过CPU的核心数量
#error_log logs/error.log; # 错误日志路径
#error_log logs/error.log notice; # 错误日志级别
#error_log logs/error.log info; # 错误日志
#pid logs/nginx.pid; # pid文件路径
events {
worker_connections 1024; # 有一个进程可以处理多少请求
}
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"';
# 定义日志信息
# $remote_addr和 $http_x_forwaded for 记录客户端的IP地址
# $remote_user 记录客户端用户的名称
# $time_local 记录来访时间和时区
# $request 记录请求的url和http协议
# $status 记录请求状态(状态码)
# $body_bytes_sent 记录发送给客户端文件主体内容
# $httpp_referer 用来记录从哪个页面链接进行跳转(访问)过来的
# $http_user_agent 记录客户端浏览器的信息
#access_log logs/access.log main;
sendfile on; # 已发送的方式传输文件
#tcp_nopush on;
keepalive_timeout 65; # 保持连接的时间
server {
listen 80; # 设置监听的端口
server_name localhost; # 域名信息,一个server对应一个域名
#charset koi8-r; # 指定字符集
#access_log logs/host.access.log main;
location / { # 表示跳转, 当前的写的location后面有/,表示如果在地址栏中输入的地址为根目录的默认ip或域名,直接将连接跳转到localtion中设置的页面上
root html; # 设置网站根目录(默认为 /usr/local/nginx/html )
index index.html index.htm; # 配置索引文件;该网页所能识别的文件类型
}
- 检查配置文件
[root@localhost nginx-1.6.0]# 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
- 开启Nginx服务
[root@localhost nginx-1.6.0]# nginx # nginx启动脚本
[root@localhost nginx-1.6.0]# netstat -anpt | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18922/nginx: master
- 访问自身nginx服务器自身ip地址
elinks 1.1.1.101
4. Nginx常用命令
启动: nginx ( /usr/local/nginx/sbin/nginx)
检查语法:nginx -t
停止nginx: nginx -s stop
重新加载: nginx -s reload
- 访问自身nginx服务器自身ip地址
elinks 1.1.1.101
[外链图片转存中...(img-KOoQtEHt-1584003190359)]
## 4. Nginx常用命令
启动: nginx ( /usr/local/nginx/sbin/nginx)
检查语法:nginx -t
停止nginx: nginx -s stop
重新加载: nginx -s reload