WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。Web已经成为很多人在网上查找、浏览信息的主要手段。成千上万的用户通过简单的图形界面就可以访问各个大学、组织、公司等的最新信息和各种服务。商业界很快看到了其价值,许多公司建立了主页,利用Web在网上发布消息,并将它作为各种服务的界面,如客户服务、特定产品和服务的详细说明、宣传广千以及是渐增长的产品销售和服务。商业用途促进了网络的迅速发展。如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的 LINUX主机上。然后,在LINUX主机上架设一个WEB服务器。你就可以将主页存放在这个自己的WEB服务器上,通过它把自己的主页向外发布。
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的。Igor Sysoev在建立的项目时,使用基于BSD许可。自Nginx 发布以来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。在俄罗斯许多大网站都已经使用它, 且一直表现不凡。俄罗斯大约有20%左右的虚拟主机是由nignx服务或代理的。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。Nginx具有很高的稳定性,其它HTTP服务器当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应只能重启服务器。
io多路复用
技术类型:
- select
- poll
- epoll:1个master进程,2个work进程,异步,非阻塞
nginx相对于apache的优点:
1、轻量级,同样起web 服务,比apache占用更少的内存及资源
2、抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
3、高度模块化的设计,编写模块相对简单
4、提供负载均衡
5、反向代理
apache 相对于nginx的优点:
1、apache的 rewrite 比nginx 的强大
2、支持动态页面
3、支持的模块多,基本涵盖所有应用
4、性能稳定,而nginx相对bug较多
nginx和apache比较:
1、Nginx配置简洁, Apache复杂
2、Nginx 静态处理性能比 Apache 高3倍以上
3、Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用
4、Apache 的组件比 Nginx 多
5、apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
6、动态请求由apache去做,nginx只适合静态和反向;nginx适合做前端服务器,负载性能很好
vim /etc/yum.repos/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install nginx
useradd nginx
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar xvzf nginx-0.8.55.tar.gz
yum -y install pcre-devel
yum -y install openssl openssl-devel
yum -y install gcc
cd nginx-0.8.55
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
make && make install
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
curl 127.0.0.1 # 如果显示Welcome to nginx! 则说明服务正常
方法一:写入rc.local文件
chmod 777 /etc/rc.local
echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf" >> /etc/rc.local
方法二:编写启动脚本 ★★★
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description: Oooo this is my nginx startup script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx # 添加可执行权限
chkconfig --add nginx # 加入chkconfig
chkconfig nginx on # 加入开机启动
centos7 启动方式:
systemctl daemon-reload # 加入systemctl
systemctl restart nginx # systemctl管理程序
rpm -ql nginx
/etc/logrotate.d/nginx # 日志轮转
/etc/nginx/nginx.conf # 主配置文件
/etc/nginx/conf.d # 子配置文件
/etc/nginx/conf.d/default.conf # 默认网站配置文件
/etc/nginx/mime.types # 关联程序
/etc/nginx/modules # 第三方模块位置
/usr/share/nginx/html/index.html # 网站默认主页
nginx -V
--prefix=/etc/nginx # 安装路径
--sbin-path=/usr/sbin/nginx # 程序文件
--modules-path=/usr/lib64/nginx/modules # 模块路径
--conf-path=/etc/nginx/nginx.conf # 配置文件
--error-log-path=/var/log/nginx/error.log # 错误日志
--http-log-path=/var/log/nginx/access.log # 访问日志
--pid-path=/var/run/nginx.pid # 程序ID
--lock-path=/var/run/nginx.lock # 锁路径,防止重复启动nginx
--http-client-body-temp-path=/var/cache/nginx/client_temp # 缓存
--http-proxy-temp-path=/var/cache/nginx/proxy_temp # 代理缓存
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp # 通用网关接口缓存
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
--http-scgi-temp-path=/var/cache/nginx/scgi_temp
cat /etc/nginx/nginx.conf |grep -v '#' |grep -Ev '^$'
# 第一部分 CoreModule 核心模块 (进程数等)
user nginx;
worker_processes 1; # 和cpu核数设置相同的数字,auto自动设置
error_log /var/log/nginx/error.log warn; # 日志目录及日志级别
pid /var/run/nginx.pid;
# 第二部分 EventsModule 事件驱动模块(工作模式等)
events {
worker_connections 1024; # 每个进程接受子进程的并发数 可以为10240
}
# 第三部分 HttpCoreModule http内核模块(文档程序类型,配置文件等)
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on; # 传输文件优化参数
keepalive_timeout 65; # 长连接优化参数
include /etc/nginx/conf.d/*.conf;
}
vim /etc/nginx/conf.d/liang.conf
server{
listen 80;
server_name web.liang.com; # 网站域名
location / {
root /usr/share/nginx/html; # 定义网站的虚拟根目录
index liang.html liang.htm; # 网站的主页面 从左往右依次寻找
}
}
server{
listen 80;
server_name web.kong.com;
location / {
root /usr/share/nginx/html;
index kong.html index.html;
}
}
server{
listen 8080;
server_name web.liang.com;
location / {
root /usr/share/nginx/html;
index liang.html index.html;
}
}
server{
listen 192.168.93.133:80;
server_name web.kong.com;
location / {
root /usr/share/nginx/html;
index kong.html index.html;
}
}