Nginx进阶

Posted lovedairan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx进阶相关的知识,希望对你有一定的参考价值。

常见的web架构

LAMP - Linux +Apache +mysql + php

LNMP - Linux +nginx + Mysql + PHP

RHEL开源  Linux系统  RHEL CentOS Fedora 开源 --- 开放源代码

 

NginxApache本身对动态网页没有处理能力 ----> PHP

 

Apache + PHP ---->apxs命令 ---> DSO方式 libphp5.so模块插入到apache 配置中

Nginx + PHP --->通过php-fpm的服务 默认9000的端口

 

nginx处理高并发针对静态小文件(1M 3W并发 - Nginx 消耗内存资源150M

 

 

官方网站: www.nginx.org Nginx是俄罗斯的站点开发

Nginx  国内用的多

Apache  全球最多

Lighttpd 贴吧 豆瓣

Tengine 淘宝 天猫商城

 

1 Nginx的安装

两种方式:

1.yum二进制安装

2.源码编译 ---- > LNMP 都是编译

默认站点目录:

     apache -  DocumentRoot    htdocs

          Nginx -- root参数指明  html目录

默认网页:

   apache配置文件中---- Directory -- index.html

         nginx                index   index.html 

一、Nginx的基本配置

关于Nginx模块 (解耦) module --- 插件(都是配置文档中的内容)

Nginx使用不同的模块来实现不同的功能,主要有2组模块:

1)Nginx core module (必须的)

包括: Mian模块  Events模块

2)standard HTTP module (不是必须的 但是缺省的安装的 不建议改动)

经典包括:

Core

Access

FastCGI

Gzip (压缩模块,性能优化)

Log 日志模块(访问  错误  警告日志)

Proxy   Nginx 的反向代理

Upstream  Nginx负载均衡

提示:  模块可以通过官网查询http://nginx.org/en/docs/

二、Nginx目录结构(重点目录 + 文件的介绍)

技术分享图片

三、Nginx主配置文件介绍

Nginx的配置文件是一个纯文本文件,整个配置文件是以块的形式组织的。每个模块

一般用{}进行表示

位于最高层 Main --->Events --->http

[[email protected] ~]# egrep -v "#|^$" /usr/local/nginx/conf/nginx.conf

worker_processes  1;        //worker模式(通过一个进程 使用多个线程去处理请求) prefork模式(全部使用进程)   work进程数,写cpu的核数    

events { 

    worker_connections  1024;     //work最大连接数

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;   监听的端口

        server_name  localhost;   域名

        location / {              默认站点

            root   html;

            index  index.html index.htm;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

 

虚拟主机====> 一台机器  运行多个web服务

基于域名

基于IP

基于端口

Apache ---->哪个标签 定义虚拟主机? <VirtualHost>

Nginx ---server {}

1.安全  互联网病毒--->扫面端口漏洞

2.成本  IP地址固定IP  每年年费

四、配置虚拟主机(基于域名)

egrep -v "#|^$" nginx.conf > log.lol

[[email protected] conf]# cp log.lol nginx.conf
cp:是否覆盖"nginx.conf"? y

worker_processes 3;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.thinkmo.cn;
charset utf-8;
root html/www; #默认站点 /appliation/nginx/html/wwww
index index.html #默认网页/appliation/nginx/html/wwww/index.html
}
server {
listen 80;
server_name blog.thinkmo.cn;
charset utf-8;
root html/; #默认站点 /appliation/nginx/html/wwww
index index.html #默认网页/appliation/nginx/html/wwww/index.html
          }
server {
listen 80;
server_name bbs.thinkmo.cn;
charset utf-8;
root html/bbs; #默认站点 /appliation/nginx/html/wwww
index index.html #默认网页/appliation/nginx/html/wwww/index.html

     } 

}

一台服务器 一个iP  三个域名 

192.168.1.200  --  www.thinkmo.cn  blog.thinkmo.cn   bbs.thinkmo.cn

修改windowshosts文件

配置站点

技术分享图片

域名解析 ---DNS正向解析

 1.去哪找? 本机hosts文件

 2.如果hosts没有  --- >代理服务器

 3.如果代理服务器没有 ---> 全球13DNS根服务器 ----> www.baidu.com

 4.返回给代理服务器

总结Nginx配置虚拟主机的流程:

1 复制一段完整的server{}标签  注意: 要放在http的结束的大括号里面

2)更改server_name  对应的网页的root根目录

3)检查文件语法 平滑启动

[[email protected] ~]# /usr/local/nginx/sbin/nginx  -t

nginx: the configuration file /usr/local/nginx-1.12.2/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx-1.12.2/conf/nginx.conf test is successfu

[[email protected] ~]# /usr/local/nginx/sbin/nginx  -s reload

4)创建server_name 对应的网页的根目录 并且建立测试文件

5)对客户端server_name 的主机做host解析 或者DNS设置

6)浏览器访问  

链接不上:拍错步骤

1)测试连通性  ping (基于icmp协议 -- 一去(echo-request)一回(echo-reply))

Tracert 追踪路径

2)测试端口 telnet

3wget或者curl  是否响应

防火墙  权限  

五、测试nginx的链接数 

在配置文件的http中添加一段,并在hosts文件中添加解析技术分享图片

技术分享图片

六、跳转301重定向

 

两种实现方式:

1)别名

在配置文件server字段的servername后面添加一个域名

技术分享图片

当我们访问thinkmo.cn的时候就会自动访问www.thinkmo.cn

Apache指定别名 用什么标签?

ServerAlias标签

2)跳转

server {

        listen       80;

        server_name  www.thinkmo.cn thinkmo.cn;

        root html/www;

        index index.html;

        rewrite ^/(.*) http://www.thinkmo.cn/$1 permanent;

        }

 

七、

通过IP --->没有变化应---->遭受IP恶意绑定

你有域名  对方有IP没有域名   用你的域名 IP

server {   第一个server标签

        listen       80;

        location / {

        deny all;

}

}

八、基于端口的虚拟主机

修改配置文件的server字段中的listen端口号,可以实现端口访问  如:服务器IP:端口号

技术分享图片

 

 当域名与端口号都存在且并不匹配时,将按照端口号为准

技术分享图片

九、基于IP的虚拟主机

 与前者类似都是修改配置文件的server字段中的listen字段,可以在端口号前面加上虚拟IP,这样访问的对面servername页面。

 

十、Nginx日志 使用第三种

Apache上的日志轮询几种形式? 3种

1.cronolog

2.ratatelog

3.cron + mv + graceful

 




























以上是关于Nginx进阶的主要内容,如果未能解决你的问题,请参考以下文章

NGINX从入门到精通进阶系列培训

saltstack部署nginx进阶

Nginx基础到进阶

nginx基础到进阶

Nginx进阶学习模块配置记录

Nginx系列——可用性监控进阶