本文内容:
1. nginx 简介 2. nginx 安装 3. nginx 简单使用一、Nginx 的三大功能
1.HTTP服务器
Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。
2.反向代理服务器
Nginx也是反向代理服务器。
说反向代理之前先说一下正向代理,正向代理相信很多大陆同胞都在这片神奇的土地上用过了。就是访问国外网被墙了,然后找个代理服务,通过该服务器访问国外网站,这个是正向代理。
反向代理是 客户端访问代理服务器,但是代理服务器没有用户需要的资源,然后代理服务器偷偷访问应用服务器,获取资源返回给用户,用户不知道代理服务器是访问了应用服务器,代理服务器也隐藏了应用服务器的url。(反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问)
3.负载均衡
Nginx可以通过反向代理来实现负载均衡。
二、Nginx 安装
2.1 CentOS 7 安装 Nginx
2.1.1.添加Nginx到YUM源
添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2.2.2.安装Nginx
在你的CentOS 7 服务器中使用yum命令从Nginx源服务器中获取来安装Nginx:
sudo yum install -y nginx
- Nginx将完成安装在你的CentOS 7 服务器中。
2.2.3. Nginx启动
nginx -c nginx.conf
启动后就可以访问 域名或者本机IP 如果出现下图,说明启动成功。
2.2.4. Nginx 停止
//查询出nginx的pid ps -ef|grep nginx//通过kill 命令杀死 nginx kill pid
注意图中nginx的 pid 为 10497
2.2.5. Nginx配置信息
网站文件存放默认目录
/usr/share/nginx/html
- 网站默认站点配置
/etc/nginx/conf.d/default.conf
自定义Nginx站点配置文件存放目录
/etc/nginx/conf.d/
Nginx全局配置
/etc/nginx/nginx.conf
2.2 docker 安装 Nginx
2.2.1下载镜像,
docker pull nginx:1.9
2.2.2 启动容器,
docker run -d -p 8080:80 nginx:1.9
把容器内的nginx的80端口,映射到当前服务器的8080端口,假设当前服务器的ip是192.168.0.100,浏览器输入,就可以看到nginx已启动,
三、Nginx 的简单实用
关于静态资源服务器的使用这里就不做说明了。
3.1 反向代理
小例子:实现访问本机 ip 然后代理 我的博地址 ,也就是在浏览器输入本机地址,然后跳转到我的博客。
3.1.1 本地安装nginx
如果是本地安装的nginx 的话需要修改 /etc/nginx/conf.d/default.conf 配置文件
注释原有的 location 然后替换为新的location
//注释原有的# location / { # root /usr/share/nginx/html; # index index.html index.htm; # }//新添加的location / { proxy_pass http://blog.csdn.net/u012373815?viewmode=list;}
然后重启nginx ,访问本机ip 就会代理到““ 我的博客地址。
3.1.2 Docker 安装
如果是docker 安装的话,需要本地随意目录下新建default.conf 文件,内容如下:
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { proxy_pass http://blog.csdn.net/u012373815?viewmode=list;} error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }}
然后重新启动容器,将default.conf 文件映射到docker容器内。
启动命令如下:docker run -p 8080:80 --name myNginx -v /本地路径/default.conf:/etc/nginx/conf.d/default.conf -d nginx:1.9
容器启动后 ,访问本机ip 就会代理到““ 我的博客地址。
3.2 负载均衡
上面的配置只实现了反向代理没有实现传说中的负载均衡。所有的请求就都被反向代理到 我的博客地址去了。这样我们反向代理的功能是实现了,可是就能代理到一台服务器上哪有什么负载均衡呀?这就要用到 nginx 的 upstream 模块了。
upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; server backend3.example.com; server backend4.example.com;}location / { proxy_pass http://backend;}
我们在 upstream 中指定了一组机器,并将这个组命名为 backend,这样在 proxypass 中只要将请求转移到 backend 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。其中的 iphash指明了我们均衡的方式是按照用户的 ip 地址进行分配。
要让配置生效,我们不必重启 nginx 只需要 reload 配置即可。参考资料: