czhtr 发表于 2018-11-14 06:13:55

nginx的简介和基本配置

  1 简介
  Nginx(发音同 engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。
  2优点
  Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
  在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
  
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。  作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
  Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。
  3安装(源码包)
  a低版本
  yum-ygroupinstall"开发工具"   "开发库"
  rpm -qmakegccgcc-c++
  netstat-utunalp | grep :80   确保80端口没有被占用
  useradd-M-s/sbin/no   www                默认使用www用户
  
  yum -y installpcre-devel
  nginx地址重写    修改客户端访问自己的url路径
  Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
  
  tar -zxvf nginx-0.8.55.tar.gz
  ./configure--help
  ./configure--prefix=/usr/local/nginx   --user=www                  制定安装目录和用户,
  --group=www   --with-http_stub_status_module                      工作组和功能
  --with-http_ssl_module
  make
  make   install
  在 /usr/local/nginx/ 下   
  conf/nginx.conf                                                                               //主配置文件
  html                                                                                                //网页目录
  logs                                                                                                //日志文件
  sbin/nginx                                                                                        //启动脚本
  
  启动服务   /usr/local/nginx/sbin/nginx
  停止服务   /usr/local/nginx/sbin/nginx-sstop
  nginx 启动脚本常用选项
  -h   查看帮助信息
  -v查看nginx版本
  -V查看编译参数   ./configure
  -t    nginx.conf测试默认配置文件
  -c   安装目录/conf/nginx-2.conf   指定配置文件
  -sstop      停止nginx服务
  
  格式:   pkill/kill   -信号   进程名/pid号
  例子 :pkill      -int   nginx
  信号
  TERM, INT   快速关闭
  QUIT 从容关闭,关闭主进程顺便关闭工作子进程
  HUP         重载配置用新的配置开始新的工作进程从容关闭旧的工作进程
  USR1 重新打开日志文件
  USR2 平滑升级可执行程序
  WINCH 从容关闭工作进程,不会立即关闭子进程
  pkill -USR1nginx
  kill-INT`cat /usr/local/nginx/log/nginx.pid`
  
  b平滑升级nginx (在不停止服务,升级软件版本,版本不宜跨度太大)
  
  tar -zxvf nginx-1.0.5.tar.gz
  cd nginx-1.0.5
  ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
  make
  mv/usr/local/nginx/sbin/nginx/usr/local/nginx/sbin/nginxold
  mv nginx-1.0.5/objs/nginx/usr/local/nginx/sbin/
  cd nginx-1.0.5
  makeupgrade
  /usr/local/nginx/sbin/nginx-v                                                       查看版本
  
  4基本配置
  
  #运行用户
  user www-data;   
  #启动进程,通常设置成和cpu的数量相等
  worker_processes1;
  #全局错误日志及PID文件
  error_log/var/log/nginx/error.log;
  pid      /var/run/nginx.pid;
  #工作模式及连接数上限
  events {
  use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
  worker_connections1024;#单个后台worker process进程的最大并发链接数
  # multi_accept on;
  }
  

  
  a基于域名的虚拟主机(通过主机名区分客户端的访问)
  http {
  server{
  listen80;
  server_name   www.zwl.com;
  location/{
  root/www;
  index index.html;
  }
  }
  server {
  listen80;
  server_namebbs.zwl.com;
  location/{
  root/bbs;
  index index.html;
  }
  }
  }
  
  b基于端口的虚拟主机(通过端口区分客户端的访问)
  http://www.zwl.com:80   www
  http://www.zwl.com:8000   bbs
  http://www.zwl.com:8090   web
  http{
  server{
  listen80;
  server_name   www.zwl.com;
  location/{
  root/www;
  index index.html;
  }
  }
  server {
  listen8000;
  server_namewww.zwl.com;
  location/{
  root/bbs;
  index index.html;
  }
  }
  server {
  listen8090;
  server_name www.zwl.com;
  location/{
  root/web;
  index index.html;
  }
  }
  }
  
  c基于ip的虚拟主机(通过ip区分客户端的访问)
  *ip 地址要有对应的物理接口
  http://192.168.10.254   www
  http://192.168.10.200   bbs
  ifconfig eth0192.168.10.254
  ifconfig eth0:0192.168.10.200
  http{
  server{
  listen192.168.10.254:80;
  #server_name   www.zwl.com;
  location/{
  root/www;
  index index.html;
  }
  }
  server {
  listen192.168.10.200:80;
  #server_namebbs.zwl.com;
  location/{
  root/bbs;
  index index.html;
  }
  }
  }
  
  d反向代理也可作web的负载均衡
  反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
  通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务
  验证:客户端访问
  


  看见了吧,同样的域名可以访问不同的页面,nginx他把两台web服务器分别来使用,1:1的
  nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  
  
  5、用户访问控制
  只允许从ip地址是192.168.10.200客户端访问 网站192.168.10.254服务器的8000端口
  server   {
  listen8000;
  server_name   www.zwl.com;
  location/{
  root   /bbs;
  indexindex.html;
  allow 192.168.10.200;
  deny all;
  #deny   192.168.10.0/24 ;
  #allowall;
  }
  }
  6、用户认证   (用户访问网站页面时要输入正确的用户名和密码才可以访问)
  访问用户名wangfang   791001
  server   {
  listen8000;
  server_name   www.zwl.com;
  location/{
  root   /bbs;
  indexindex.html;
  allow 192.168.10.200;
  deny all;
  #deny   192.168.10.0/24 ;
  #allowall;
  auth_basic"input username and password";
  auth_basic_user_file    /usr/local/nginx/conf/authuser.txt;
  }
  }
  7防盗链
  盗 链:   其他的网站盗连你的网站资源 给自己盈利。
  
  location~*   \.(gif|jpg|png|swf|flv)$ {
  valid_referersnoneblockedwww.zwl.com.zwl.com;
  if ($invalid_referer) {
  rewrite   ^/      http://192.168.10.254/error.html;
  #return   404;
  }
  }
  这就是防止其他网站访问图片的例子,只有在本机和本域才能访问的
  
  
  
  
  
  
  


页: [1]
查看完整版本: nginx的简介和基本配置