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 repo

baseurl=http://nginx.org/packages/centos/7/$basearch/

gpgcheck=0

enabled=1

yum clean all && yum makecache

yum -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.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
  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.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管理程序

三、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 核心模块  (进程数等)

  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;
    }

六、虚拟主机

1.基于域名的虚拟主机 要写本地解析

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;

}

}

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;

}

}

你可能感兴趣的:(nginx,nginx,linux,运维)