简介
Nginx
是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
操作
Nginx的基本操作 | |
---|---|
解释 | 命令 |
安装 | yum install nginx |
启动 | service nginx start |
停止 | service nginx stop |
重载 | service nginx reload |
重启 | service nginx restart |
1、添加CentOS7 Nginx yum 资源库
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2、sudo yum install -y nginx
[wujiahao@host ~]# sudo yum install -y nginx
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
epel | 3.2 kB 00:00:00
extras | 3.4 kB 00:00:00
nginx | 2.9 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/8): epel/x86_64/group_gz | 88 kB 00:00:00
(2/8): base/7/x86_64/group_gz | 166 kB 00:00:00
(3/8): epel/x86_64/updateinfo | 934 kB 00:00:00
(4/8): extras/7/x86_64/primary_db | 204 kB 00:00:00
(5/8): epel/x86_64/primary | 3.6 MB 00:00:00
(6/8): base/7/x86_64/primary_db | 5.9 MB 00:00:01
(7/8): updates/7/x86_64/primary_db | 6.0 MB 00:00:00
(8/8): nginx/x86_64/primary_db | 35 kB 00:00:02
Determining fastest mirrors
epel 12741/12741
正在解决依赖关系
--> 正在检查事务
---> 软件包 nginx.x86_64.1.1.14.0-1.el7_4.ngx 将被 安装
--> 解决依赖关系完成
依赖关系解决
=======================================================================================================================================================================
Package 架构 版本 源 大小
=========================================================================================================================================================================
正在安装:
nginx x86_64 1:1.14.0-1.el7_4.ngx nginx 750 k
事务概要
=========================================================================================================================================================================
安装 1 软件包
总下载量:750 k
安装大小:2.6 M
Downloading packages:
nginx-1.14.0-1.el7_4.ngx.x86_64.rpm | 750 kB 00:00:56
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : 1:nginx-1.14.0-1.el7_4.ngx.x86_64 1/1
----------------------------------------------------------------------
Thanks for using nginx!
Please find the official documentation for nginx here:
* http://nginx.org/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
* http://nginx.org/en/support.html
Commercial subscriptions for nginx are available on:
* http://nginx.com/products/
----------------------------------------------------------------------
验证中 : 1:nginx-1.14.0-1.el7_4.ngx.x86_64 1/1
已安装:
nginx.x86_64 1:1.14.0-1.el7_4.ngx
完毕!
3、firewall-cmd --zone=public --add-port=80/tcp --permanent
关闭防火墙
如果是阿里云或者公司的服务器的话请在网络安全组当中配置开启80端口
4.(概念)配置NGINX的虚拟主机
Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。
5.[wujiahao@host ~]# service nginx start
在浏览器输入你的公网IP地址就会出现下面的页面啦
- 打开
vim /etc/nginx/conf.d/default.conf
的文件
这就是我们nginx的默认基础配置啦
这里跟Apache的配置类似都是采用读取一个个模块方式加载
尽量保持/etc/nginx/nginx.conf
主文件的清晰
/etc/nginx/nginx.conf
文件中的include /etc/nginx/conf.d/*.conf;
意思就是默认导入conf.d下面所以后缀为.conf的文件都导入到nginx 的配置当中
至此你应该明白不要主文件当中做配置
7.那么接下来让我看看到底怎么配置一个自己的虚拟主机吧
1) 首先复制一份默认文件 改个名字我们就在这个文件当中修改我们自己的配置
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
删除文件内,所有的内容重写如下
server {
listen 80; #监听的端口80
server_name wujiahao.com; #域名地址
root /static/www/; #站点的根目录
index index.html index.htm; #默认访问 index index.html index.htm 文件
}
保存退出
重启nginx
[wujiahao@host conf.d]#service nginx reload
至此一个简单的 nginx的配置就OK了
打开浏览器输入 wujiahao.com 就可以看到你的指定/static/www/的目录下的index文件啦
8.下面就让我来给大家介绍 nginx流行原因之一反向代理,简而言之就是你以为你访问的是47.101.200.215
这台机器其实你访问的是48.122.201.215
这台机器 这就是反向代理
的最直观的意思 如下图 就是反向代理和负载均衡的示意
那么现在让我们来修改一下first.conf文件实现nginx的反向代理吧
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
upstream haoge { #被代理的对象
server 118.98.105.129:80; #被代理的实际地址,请求最终最终都会达到这里
}
server {
listen 80;
linsten 9999; #nginx 是可以配置多个端口的,所以这里展示80 和9999端口演示
server_name wujiahao1.com wujiahao2.com; #这里也是可以配置多个域名进行访问的
root /static/www; #站点根目录
index index.html index.htm; #默认访问根目录下的index文件
access_log /etc/nginx/log/access_haoge.log haoge; #指定日志输出的格式可以自定义
location / {
proxy_set_header Host www.wujiahao.com; #设置代理服务器的头部域名信息因为很多网站可能会设置只允许域名访问
proxy_pass http://haoge; #将请求转发到haoge 也就是上面定义的upstream的定义的主机上
}
}
[wujiahao@host conf.d]#service nginx reload
你会发现你看到的其实是118.98.105.129:80的这个主机上面的内容 你的请求已经被转发
9.说完反向代理 我们再来聊聊负载均衡 相信很多小伙伴们都不陌生
很多大型的网站流量很多 需要做到分流 所以这个时候负载均衡就是必不可少的了那么现在然我们来看看负载均衡的配置吧
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
upstream haoge { #被代理的对象 此时这里是两个主机地址 如果不分配权重那么将用户的请求将被1:1的分发到两个服务器并返回不同的内容 也就是说你不设置权重 就会两个交的返回两个主机上的内容
server 118.98.105.129:80 weight=5;
server 116.89.103.203:80 weight=1; #这里的weight代表权重即是比例的意思的 现在这样代表 server1被访问五次之后server2才会被访问一次 依次5:1的比例交替执行
}
server {
listen 80;
linsten 9999; #nginx 是可以配置多个端口的,所以这里展示80 和9999端口演示
server_name wujiahao1.com wujiahao2.com; #这里也是可以配置多个域名进行访问的
root /static/www; #站点根目录
index index.html index.htm; #默认访问根目录下的index文件
access_log /etc/nginx/log/access_haoge.log haoge; #指定日志输出的格式可以自定义
location / {
proxy_set_header Host www.wujiahao.com; #设置代理服务器的头部域名信息因为很多网站可能会设置只允许域名访问
proxy_pass http://haoge; #将请求转发到haoge 也就是上面定义的upstream的定义的主机上
}
}
[wujiahao@host conf.d]#service nginx reload
重启之后测试一下刷新6次就只有一次 server2的内容 说明权重设置成功了
至此nginx的基本功能 虚拟主机 反向代理 负载均衡就讲完了
10.最后 再给大家补充一个调试的调试功能 其实也是和我们写代码一样的 写着写着总会出错 那么就需要进行调试,那么现在让我们来看看 如和调试吧
[wujiahao@host ~]# vim /etc/nginx/nginx.conf
[wujiahao@host ~]# cd /etc/nginx/conf.d/
[wujiahao@host conf.d]# cp default.conf first.conf
[wujiahao@host conf.d]# vim first.conf
server {
listen 80;
linsten 9999;
add_header Content-Type "text/plain;charset=utf-8"; #因为浏览器默认解析html 所以这里加上协议头方便解析我们返回的域名
return 200 "$http_host"; #返回当前访问的域名显示在浏览器
server_name wujiahao1.com wujiahao2.com;
root /static/www;
index index.html index.htm;
access_log /etc/nginx/log/access_haoge.log haoge;
}
[wujiahao@host conf.d]#service nginx reload
当你打开浏览器 通过域名访问就可以直接返回你到底访问的是哪个域名啦
调试完记得注释不让请求可能会出错
如果有什么疑问请下方留言 今天的nginx 就说到这里啦
如果转载请注明出处 --吴佳浩
网友评论