Ngix这几年太火了,在不久的将来会超过Apache,由于他的底层用epoll,现在多用于服务器端的反向代理和负载均衡 ,强大的并发性能使其基本上没有项目不用他。
本篇把 Ngix 的基础配置撸了一遍,记下来以免以后忘了。
安装
可查看Nginx官网
连接远程服务器
1 | ssh [email protected] |
输入密码后见到登录了
安装些必要的工具
1 | yum -y install gcc gcc-c++ autoconf pcre-devel make automake |
返回家目创建Nginx主要文件夹
1 | cd ~ |
app: 放程序源码
backup: 备份文件
download: 下载文件夹
logs: 日志
work: 放一些项目文档
安装最新版Nginx
需查看Nginx的yum源的版本,运行以下命令:
1 | yum list | grep nginx |
yum 源的更新配置,复制Nginx官网这里的配置,我把他粘出来
1 | [nginx-stable] |
1 | vim /etc/yum.repos.d/nginx.repo |
其中 baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
的 $releasever
我用的是centOS 7的版本,所以我直接改成7,如下:
这次再安装nginx
1 | yum install nginx |
可以发现更新到最新的nginx版本
查看所有 nginx 目录及配置文件的命令:
1 | rpm -ql nginx |
Nginx配置项详解
配置项:大部分工作在以下两个文件执行修改:
/etc/nginx/nginx.conf
cd /etc/nginx
cat nginx.conf
下面解释一下各配置的作用:
1 | user nginx; # 默认用户 |
1 | cd conf.d/ |
1 | server { |
网站根目录
我们改动一点根目录的内容:
1 | vim /usr/share/nginx/html/index.html |
运行Nginx
开启
1 | nginx |
关闭
1 | 正常关停 |
重载
每次改完配置文件后,需要重载nginx,运行一下命令:
1 | nginx -s reload |
Linux通用命令执行开启,关闭和重载
当然,也可以用Linux的通用命令进行关停或重启:
1 | 或 Linux通用命令: |
查看进程
通过查看nginx所有进程确认其已经运行:
1 | ps aux | grep nginx |
查看所有开启的端口号
1 | netstat -tlnp |
配置一个404页面,修改一个配置如下:
1 | vim /etc/nginx/conf.d/default.conf |
增加一行,改成这样:
做一个404页面:
1 | vim /usr/share/nginx/html/404_error.html |
写完页面后,地址栏随便输入一地址会发现出现了404页面:
也可以重定向到其他页面,如:
1 | vim /etc/nginx/conf.d/default.conf |
权限控制
禁止某些ip不能访问
1 | vim /etc/nginx/conf.d/default.conf |
- 在default.conf加上
deny 113.65.137.13;
,如下,禁止了我本机不可以访问 - 如果要禁止某一网段的IP不能访问,则写:
deny 113.65.137.13/200;
,表示 13 到 200 的所有IP号都不能访问 allow
允许哪些IP可以访问- 注意!!!
default.conf
文件是从上往下执行,如deny all;
写在allow 113.65.137.13;
之前,那么113.65.137.13
仍不能访问
再次在页面打开,就会发现不能访问页面,出现403页面:
精确匹配路径访问权限
- 在
location
配置某些路径允许哪些IP 进行访问,添加如下: - 都是正则匹配,除了路径,还可匹配不能访问的文件,如
.php
结尾的文件
1 | location =/img { |
虚拟主机
配置虚拟主机的好处,可以省钱,一台物理服务器可划分多个空间,每个独立空间可配置独立的虚拟主机,彼此相互隔离,每个虚拟主机可以独立配置web服务
基于端口号配置虚拟主机
在 /etc/nginx/conf.d/
下新建 8001.conf
文件,用于配置 8001
端口的虚拟主机
1 | vim /etc/nginx/conf.d/8001.conf |
基于改虚拟主机配置一个 index.html
文件:
1 | touch /usr/share/nginx/html/html8001/index.html |
写下
1 | <h1>welcome to port 8001</h1> |
我这里用的是阿里云做演示,所以返回阿里云界面配置8001端口:
基于IP配置虚拟主机
同样是改变 8001.conf
文件的 localhost
项的配置
1 | vim /etc/nginx/conf.d/8001.conf |
如:
1 | server{ |
基于域名配置虚拟主机
在阿里云上申请域名,这里不演示,现在 .top
结尾的域名在做促销,起个稍微长点的域名注册只需9元就能注册一年, 我这里注册了 service-learn.top
花了9元
点击域名解析:
输入ip地址,类型选择A类型:
在nginx 配置
1 | vim /etc/nginx/conf.d/default.conf |
将 server_name localhost;
改为 server_name niginx.service-learn.top;
同样的原来的基于端口的虚拟机8001端口也修改:
先去阿里云配置解析 nginx2.service-learn.top
地址
1 | vim /etc/nginx/conf.d/8001.conf |
将 server_name localhost;
改为 server_name nginx2.service-learn.top;
,改后如下:
1 | server{ |
反向代理
正向代理(Proxy)
为客户端做的代理服务器,最形象的解释就是,我们平时用vpn翻墙上外网,
反向代理(Reverse Proxy)
为服务端做的代理服务,反向代理最大的好处是
安全性,使用反向代理客户端用户只能通过外来网来访问代理服务器,并且用户并不知道自己访问的真实服务器是那一台,可以很好的提供安全保护。在遭受网络攻击时,会被停留在反向代理上,攻击不到我们真实的服务器。
功能性,反向代理的主要用途是为多个服务器提供负债均衡、缓存等功能。负载均衡就是一个网站的内容被部署在若干服务器上,可以把这些机子看成一个集群,那Nginx可以将接收到的客户端请求“均匀地”分配到这个集群中所有的服务器上,从而实现服务器压力的平均分配,也叫负载均衡。
Nginx的反向代理实操
这里我们用 8001 的配置来做反向代理,设置也很简单,修改 vim /etc/nginx/conf.d/8001.conf
如下
我们要访问 8.134.120.206:8001 端口的网站,反向代理到 我的博客 这个网站上
1 | server{ |
打开浏览器显示如下,反向代理设置成功:
反向代理其他配置参数
proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。
proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
Nginx适配移动端
这里和前端的调整页面布局的自适应不是一个概念,现在的移动端适配,是由于不同域名的切换,引起的适配,所以Nginx在这块就能发挥作用,
这种通过Nginx的适配,体验效果会更好,包括淘宝京东在内的国内大型网站都是采用Nginx的方案
我们可以打开浏览器打开京东看到这种适配:
我们来做类似的功能:
建立pc和移动端两个文件夹
1 | mkdir /usr/share/nginx/pc /usr/share/nginx/mobile |
分别编辑 vim /usr/share/nginx/mobile/pc/index.html
和 vim /usr/share/nginx/mobile/mobile/index.html
,随便写点内容
编辑Nginx设置如下即可
1 | server{ |
打开浏览器看看效果
Gzip压缩
网页的一种压缩技术,经过Gzip压缩过后的网页,会缩小到原来30%的大小
查看一个网站是否有gzip压缩
在站长工具 里查看,直接输入域名即可,例如我们查询 8.134.120.206
还没配置gzip压缩
Nginx的gzip压缩功能非常丰富,配置也很简单
1 | vim /etc/nginx/nginx.conf |
添加两行配置如下:
1 | gzip on; |
改完后重载Nginx服务,再用站长工具查询可看到