Linux - nginx基础及常用操作
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基础及常用操作的更多相关文章
- 小白入门使用Nginx基础的常用操作
nginx启动,重启,关闭命令 停止操作 停止操作前需要ps当前Nginx的所有进程 步骤1:查询nginx主进程号 ps -ef | grep nginx 在进程列表里 面找master进程,它的编 ...
- Linux下mysql的常用操作
Linux下mysql的常用操作: 显示数据库 show databases; 选择数据库 use 数据库名; 显示数据库中的表 show tables; 显示数据表的结构 describe 表名; ...
- Linux 的基础命令的操作
Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...
- Ubuntu安装设置nginx和nohup常用操作
nginx安装 Ubuntu直接从常规源中安装 apt-get install nginx 安装的目录 配置文件:/etc/nginx/ 主程序文件:/usr/sbin/nginx Web默认目录:/ ...
- 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. ...
- linux proc目录和常用操作
------------------------------------------------/proc----------------------------------------------- ...
- linux下svn命令常用操作
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:s ...
- linux之sed的常用操作
Sed命令: sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(patter ...
- 【Apache系列】linux下Apache的常用操作
1. 启动/停止 1.1假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: /usr/local/apache2/bin/apachect ...
随机推荐
- 初探C++运算符重载学习笔记<2> 重载为友元函数
初探C++运算符重载学习笔记 在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况. 以下的两种情况发生.则我们须要将运算符重载为类的友元函数 <1>成员函数不能满足要求 ...
- 快学Scala习题解答—第十章 特质
10 特质 10.1 java.awt.Rectangle类有两个非常实用的方法translate和grow,但可惜的是像java.awt.geom.Ellipse2D这种类没有. 在Scala中,你 ...
- ※交换排序(1)——快速排序(quick sort)
快速排序使用分治策略(Divide and Conquer)来把一个序列分为两个子序列.步骤为: 从序列中挑出一个元素,作为"基准"(pivot). 把所有比基准值小的元素放在基准 ...
- extern_c
(1) 使用extern和包含头文件来引用函数有什么区别呢?extern的引用方式比包含头文件要简洁得多!extern的使用方法是直截了当的,想引用哪个函数就用extern声明哪个函数.这大概是 ...
- Mybatis 代码自动生成(generatorConfig.xml配置)
博客推荐: Mybatis最入门---代码自动生成(generatorConfig.xml配置) MyBatis Generator generatorConfig.xml配置详解 pom.xml&l ...
- [Swift通天遁地]二、表格表单-(12)设置表单文字对齐方式以及自适应高度的文本区域TextArea
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Java里边什么是值传递和引用传递?两个有什么区别
学过java基础的人都知道,在java中参数的传递过程中有值传递和应用传递,那么这两个到底有什么区别呢,下面我通过例子为大家详细的介绍下. 我们都知道Java中有八种数据类型,基础数据类型分别是:by ...
- Android内存管理(6)onTrimMemory,onLowMemory,MemoryInfo()
转自: http://www.cnblogs.com/sudawei/p/3527145.html 参考: Android Application生命周期学习 Android中如何查看内存(上) An ...
- 为什么使用HttpServlet?http协议特点、servlet
因为只有HttpServlet是基于http协议,实现Servlet接口,而http协议是短连接协议,能够实现客户端访问服务端后,数据交互后 连接自动断开.同时http协议基于tcp.ip协议,封装了 ...
- mysql和java的时间对应关系
引用:http://blog.csdn.net/xinghuo0007/article/details/51500923 MySQL(版本:5.1.50)的时间日期类型如下: datetime 8by ...