nginx|nginx那点事儿——nginx基础详解


nginx基础

  • 前言
  • 一、nginx优势
      • 1.nginx简介
      • 2. nginx优势
      • 3.nginx与apache比较
  • 二、nginx部署
      • 方式一:yum部署
      • 方式二:源码包安装
  • 三、nginx主要配置文件
  • 四、nignx主要配置参数
  • 五、主配置文件
  • 六、虚拟主机
      • 1.基于域名的虚拟主机 *要写本地解析*
      • 2.基于端口的虚拟主机 *访问时ip 或者 域名 都要加端口号 默认端口为80*
      • 3.基于ip的虚拟主机 *适用于一个主机多个ip*

前言
WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。Web已经成为很多人在网上查找、浏览信息的主要手段。成千上万的用户通过简单的图形界面就可以访问各个大学、组织、公司等的最新信息和各种服务。商业界很快看到了其价值,许多公司建立了主页,利用Web在网上发布消息,并将它作为各种服务的界面,如客户服务、特定产品和服务的详细说明、宣传广千以及是渐增长的产品销售和服务。商业用途促进了网络的迅速发展。如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布。但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的 LINUX主机上。然后,在LINUX主机上架设一个WEB服务器。你就可以将主页存放在这个自己的WEB服务器上,通过它把自己的主页向外发布。
一、nginx优势 1.nginx简介
??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服务器当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应只能重启服务器。
2. nginx优势
io多路复用
??技术类型:
????- select
????- poll
????- epoll:1个master进程,2个work进程,异步,非阻塞
3.nginx与apache比较
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适合做前端服务器,负载性能很好
二、nginx部署 方式一:yum部署
vim /etc/yum.repos/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1yum clean all && yum makecacheyum -y install nginx

方式二:源码包安装
  1. 添加用户
useradd nginx

  1. 下载源码包
wget http://nginx.org/download/nginx-1.16.1.tar.gz

  1. 编译安装
tar xvzf nginx-0.8.55.tar.gzyum -y install pcre-develyum -y install openssl openssl-develyum -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_modulemake && make install

  1. 启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  1. 访问主页测试
curl 127.0.0.1# 如果显示Welcome to nginx! 则说明服务正常

  1. 设置开机启动
方法一:写入rc.local文件
chmod 777 /etc/rc.localecho "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf" >> /etc/rc.local

【nginx|nginx那点事儿——nginx基础详解】方法二:编写启动脚本 ★★★
vim /etc/init.d/nginx#!/bin/bash# chkconfig: - 99 20# description: Oooo this is my nginx startup scriptPROG="/usr/local/nginx/sbin/nginx"PIDF="/usr/local/nginx/logs/nginx.pid"case "$1" instart)$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 1esacexit 0chmod +x /etc/init.d/nginx# 添加可执行权限chkconfig --add nginx# 加入chkconfigchkconfig nginx on# 加入开机启动centos7 启动方式:systemctl daemon-reload# 加入systemctlsystemctl restart nginx# systemctl管理程序

三、nginx主要配置文件
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# 网站默认主页

四、nignx主要配置参数
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 核心模块(进程数等)usernginx; worker_processes1; # 和cpu核数设置相同的数字,auto自动设置error_log/var/log/nginx/error.log warn; # 日志目录及日志级别pid/var/run/nginx.pid; # 第二部分 EventsModule 事件驱动模块(工作模式等)events {worker_connections1024; # 每个进程接受子进程的并发数 可以为10240}# 第三部分 HttpCoreModulehttp内核模块(文档程序类型,配置文件等)http {include/etc/nginx/mime.types; default_typeapplication/octet-stream; # 字节流处理方式log_formatmain'$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.logmain; sendfileon; # 传输文件优化参数keepalive_timeout65; # 长连接优化参数include /etc/nginx/conf.d/*.conf; }

六、虚拟主机 1.基于域名的虚拟主机 要写本地解析
vim /etc/nginx/conf.d/liang.confserver{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; }}

2.基于端口的虚拟主机 访问时ip 或者 域名 都要加端口号 默认端口为80
server{listen 8080; server_name web.liang.com; location / {root /usr/share/nginx/html; index liang.html index.html; }}

3.基于ip的虚拟主机 适用于一个主机多个ip
server{listen 192.168.93.133:80; server_name web.kong.com; location / {root /usr/share/nginx/html; index kong.html index.html; }}

    推荐阅读