Linux - nginx基础及常用操作

nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用。
nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问效率。
nginx不但是一个优秀的web服务软件,还可以作为反向代理,负载均衡,以及缓存服务使用。
安装更为简单,方便,灵活。
nginx可以说是非常nb了
  • 支持高并发,能支持几万并发连接
  • 资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
  • 可以做http反向代理和负载均衡
  • 支持异步网络i/o事件模型epoll

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

Tengine淘宝nginx安装流程

1.淘宝nginx的学习使用,安装

下载源码包

cd /opt

wget -c http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

2.卸载掉之前,学习yum时候,安装的nginx软件,

yum remove nginx -y

3。解决编译安装nginx的软件依赖

yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

4.解压缩源码包,安装

解压

tar -zxvf tengine-2.2.0.tar.gz

源码编译安装三部曲

cd  tengine-2.2.0

	1.释放makefile

	./configure --prefix=/opt/tnginx220

cd tnginx220

	2.编译nginx

	make 

	3.编译安装

	make install

4.编译完成后,tnginx就可以用了

学习nginx的代码目录结构

[root@master tnginx220]# pwd

/opt/tnginx220

[root@master tnginx220]#

[root@master tnginx220]# ll

total 8

drwx------. 2 nobody root    6 Mar 11 08:51 client_body_temp

drwxr-xr-x. 2 root   root 4096 Mar 11 08:50 conf                #放nginx所有配置文件的地儿

drwx------. 2 nobody root    6 Mar 11 08:51 fastcgi_temp

drwxr-xr-x. 2 root   root   40 Mar 11 08:50 html                #存放前端 html文件的      

drwxr-xr-x. 2 root   root 4096 Mar 11 08:50 include

drwxr-xr-x. 2 root   root   41 Mar 11 08:52 logs                #nginx的日志文件夹

drwxr-xr-x. 2 root   root    6 Mar 11 08:50 modules

drwx------. 2 nobody root    6 Mar 11 08:51 proxy_temp

drwxr-xr-x. 2 root   root   35 Mar 11 08:50 sbin                #存放nginx二进制命令的

drwx------. 2 nobody root    6 Mar 11 08:51 scgi_temp

drwx------. 2 nobody root    6 Mar 11 08:51 uwsgi_temp

5.启动淘宝nginx

./nginx

6.添加linux的PATH变量,快捷使用nginx命令

echo $PATH  

PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tnginx220/sbin"

永久添加变量环境:

 vim ~/.bash_profile

修改/etc/profile文件,通过vi或vim增加变量

nginx的主配置文件nginx.conf

http内核模块

//公共的配置定义在http{}

http {  //http层开始

...    

    //使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)

    'server' {

        listen       80;        //监听端口, 默认80

        server_name  localhost; //提供服务的域名或主机名

        access_log host.access.log  //访问日志

        //控制网站访问路径

        'location' / {

            root   /usr/share/nginx/html;   //存放网站代码路径

            index  index.html index.htm;    //服务器返回的默认页面文件

        }

        //指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton

        error_page   500 502 503 504  /50x.html;

    }

    ...

    //第二个虚拟主机配置

    'server' {

    ...

    }

    include /etc/nginx/conf.d/*.conf;  //包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件

}   //http层结束

基于域名的多虚拟主机实战

一个服务器上,可以运行两个乃至多个网站

注意: 防火墙端口问题

1.环境准备,准备好2个域名 ,这里是模拟的本地域名解析 ,找到hosts文件

由于我们是想配置windows,可以访问不同的 域名,因此配置windows的hosts

	192.168.11.65  dnf.com 

	192.168.11.65  xiaohua.com

  编辑文件 C:\Windows\System32\drivers\etc\hosts
写入

2.配置nginx支持多虚拟主机

修改nginx.conf 修改2个server虚拟主机的配置

dnf的虚拟主机

server {

    listen 80;

    server_name  dnf.com;

    # 当我们访问s17dnf.com:80/的时候,就进入这个虚拟主机,且找到这个location,进行网站资源分配

    location / {

        root /opt/s17dnf/;

        index index.html;

    }

}

第二个虚拟主机,s17校花网

server{

    listen 80;

    server_name  xiaohua.com;

    location / {
root /opt/s17xiaohua/;
index index.html;
} } 分别修改两个网址的根目录数据 mkdir -p /opt/{s17dnf,s17xiaohua} 分别在/opt/s17dnf/创建index.html /opt/s17xiaohua/创建index.html

3.修改完配置文件,检测语法

nginx -t

4.平滑加载nginx(不重启nginx,重新读取配置文件)

nginx -s reload

nginx的访问日志功能

编辑 nginx.conf

打开注释

http {

    include       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 logs/access.log main; ...

网站的404页面优化

1.编辑nginx.conf ,配置如下:

server {
listen 80;
server_name s17dnf.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
root /opt/s17dnf;
index index.html index.htm;
}
#打开这个参数的配置,开启错误页面
error_page 404 /404.html;
error_page 401 402 403 /403.html;
}

2.编辑/opt/s17dnf下 HTML文件

拒绝某些ip访问

 location / {

            deny  你想限制的ip;

            root   /opt/s17dnf;

            index  index.html index.htm;

        }

nginx的反向代理

nginx反向代理的实现

1.实验环境准备

192.168.11.229   真实资源服务器,模拟django       ,理解为房东的房屋资源 

192.168.11.136   nginx代理服务器                 ,理解为 房屋中介

2.思路

我们作为客户端,访问 代理服务器, ,代理服务器,将资源服务器上的东西,进行返回

3.配置 资源服务器

192.168.11.229  s17dnf.com

4.配置代理服务器

192.168.11.136 

修改192.168.11.136这台机器的nginx配置文件,开启反向代理
配置nginx.conf的server{}如下 server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _; location / {
#反向代理参数,当我们请求192.168.11.136:80/的时候,进入这里server,然后location进行资源分配
proxy_pass http://192.168.11.229; #就是间接的访问了 192.168.11.229:80/
} }

nginx负载均衡简单实现

思路介绍:

nginx.conf>http>定义一个负载均价池

upstream  myserver  {

server   192.168.11.229;

server   192.168.11.xx;  

}

nginx.conf>http>通过反向代理转发

        server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _; location / {
#反向代理参数,当我们请求192.168.11.136:80/的时候,进入这里server,然后location进行资源分配
proxy_pass myserver; #就是间接的访问了 192.168.11.229:80/
} }

配置nginx负载均衡:

环境准备,三台服务器

三台机器都是通过nginx实现的

192.168.11.136  反向代理服务器  

192.168.11.229   资源服务器1    这个机器是返回的dnf页面 

192.168.11.176   资源服务器2    这个配置的是 index.html  来了老弟

1.配置反向代理服务器 192.168.11.136

修改nginx.conf如下参数

定义负载均衡池

upstream s17server {

server 192.168.11.229;

server 192.168.11.176;

}

        #转发请求给负载均衡池
location / {
proxy_pass http://s17server;
}

2.此时通过负载均衡器 192.168.11.136,进行访问测试,默认是轮询机制

3.upstream分配策略

weight 权重

upstream django {
server 10.0.0.10:8000 weight=5;
server 10.0.0.11:9000 weight=10;#这个节点访问比率是大于8000的
}

ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
upstream django {
    ip_hash;
server 10.0.0.10:8000;
server 10.0.0.11:9000;
}

backup

在非backup机器繁忙或者宕机时,请求backup机器,因此机器默认压力最小

upstream django {
server 10.0.0.10:8000 weight=5;
server 10.0.0.11:9000;
server node.oldboy.com:8080 backup;
}

Linux - nginx基础及常用操作的更多相关文章

  1. 小白入门使用Nginx基础的常用操作

    nginx启动,重启,关闭命令 停止操作 停止操作前需要ps当前Nginx的所有进程 步骤1:查询nginx主进程号 ps -ef | grep nginx 在进程列表里 面找master进程,它的编 ...

  2. Linux下mysql的常用操作

    Linux下mysql的常用操作: 显示数据库 show databases; 选择数据库 use 数据库名; 显示数据库中的表 show tables; 显示数据表的结构 describe 表名; ...

  3. Linux 的基础命令的操作

    Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...

  4. Ubuntu安装设置nginx和nohup常用操作

    nginx安装 Ubuntu直接从常规源中安装 apt-get install nginx 安装的目录 配置文件:/etc/nginx/ 主程序文件:/usr/sbin/nginx Web默认目录:/ ...

  5. day63:Linux:nginx基础知识&nginx基础模块

    目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...

  6. linux proc目录和常用操作

    ------------------------------------------------/proc----------------------------------------------- ...

  7. linux下svn命令常用操作

    1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:s ...

  8. linux之sed的常用操作

    Sed命令: sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(patter ...

  9. 【Apache系列】linux下Apache的常用操作

    1. 启动/停止 1.1假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: /usr/local/apache2/bin/apachect ...

随机推荐

  1. 20170623_oracle备份和恢复_常见问题

    1 为什么需要备份?备份分类? 1)故障.迁移.误操作 2)备份分类: 物理与逻辑角度:物理备份.逻辑备份 备份策略角度:完全备份.增量备份.差异备份 2 使用导入导出进行备份和恢复及其四种模式:其他 ...

  2. 如何利用UDP协议封装一个数据包

    在如何封装一个数据包上,是一个非常细致的问题,而利用UDP协议来封装的话,是比较简单,让我们一步步来分析典型的TCP/IP协议.一般来说一个典型的一个数据包,包括以太网MAC头+网络层IP数据头+传输 ...

  3. Xshell配色方案啊【学习笔记】

    自己移植从putty版本移植到Xshell的配色方案,效果不错,看上去挺舒服. [myisayme] text(bold)=eaeaea magenta(bold)=ff55ff text=fffff ...

  4. P2657 [SCOI2009]windy数 数位dp

    数位dp之前完全没接触过,所以NOIP之前搞一下.数位dp就是一种dp,emm……用来求解区间[L,R]内满足某个性质的数的个数,且这个性质与数的大小无关. 在这道题中,dp[i][j]代表考虑了i位 ...

  5. scrapy xpath中提取多个class值

    xpath中没有提供对class的原生查找方法.但是 stackoverflow 看到了一个很有才的回答: This selector should work but will be more eff ...

  6. css的一些命名规范

    网页制作中规范使用DIV+CSS命名规则,可以改善优化功效特别是团队合作时候可以提供合作制作效率,具体DIV CSS命名规则CSS命名大全内容篇. 常用DIV+CSS命名大全集合,即CSS命名规则 D ...

  7. 阿拉伯数字1与英语字母l造成的代码bug

    <img src="./images/demo3/1a.png" /> <img src="./images/demo3/la.png" /& ...

  8. 手机不ROOT使用xposed框架-微信群同步-微咖讲师-安装教程

    其实已经很多人知道Xposed框架这个便捷的工具,但是呢由于框架必须root,导致很多用户望而却步,今天就来教下大家,如何不root玩转xposed框架 1.下载 SandVxposed免root 虚 ...

  9. python自动化测试学习笔记-1

    一.什么是自动化 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.直白的就是为了节省人力.时间或硬件资源,提高测试效率,便引入了通过软件或程序自动化执行测试用例进行测试: 二.python ...

  10. webview加载本地页面

    main.xml中布局webview,activity中设置如下 MyWebView=(WebView)findViewById(R.id.webView1); MyWebView.requestFo ...