一、Centos下安装Nginx
如果机器是第一次安装Nginx,需要在安装Nginx之前设置Nginx的软件包仓库,之后都是通过设置的这个仓库进行安装和更新Nginx
- 安装一些预先需要的配置
yum install yum-utils
- 设置yum仓库,在/etc/yum.repos.d创建一个nginx.repo文件
- 文件内容为
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
默认情况下使用的是稳定版
若要使用开发版,可以通过yum-config-manager --enable nginx-mainline
来设置。
- 安装Nginx
yum install nginx
二、Nginx入门
Nginx的配置文件nginx.conf
的存放位置(或关系):
- /usr/local/nginx/conf
- /etc/nginx
- /usr/local/etc/nginx
Nginx的启动、停止与重新加载配置文件
启动Nginx
nginx
停止Nginx
# 立即停止
nginx -s stop
# 待nginx处理完正在服务的请求后才会停止
nginx -s quit
重新加载配置文件
nginx -s reload
当配置文件修改之后,若不重启Nginx服务器或者重新加载配置文件,则修改后的配置不会生效。
当使用
nginx -s reload
重新加载配置文件时,Nginx的主进程会对新的配置文件进行语法检查,并使用新的配置信息;若上述操作成功:
- 主进程就会开启新的工作进程
- 主进程会向旧的工作进程发送消息要求它们停止工作,当工作进程收到停止工作的命令后,便不会再接收新的请求,只会服务于当前正在服务的请求,当所有的请求被处理完之后,旧的工作进程便会被关闭掉。
若上述操作失败:
- 主进程会回滚发生的改变,依旧使用旧的配置文件中的配置信息
reload的过程中,Nginx服务不会停止。
重新打开日志文件
nginx -s reopen
查看Nginx的版本
nginx -v
三、Nginx作为静态资源服务器
-
准备工作
- 创建/data/www文件夹并在其中创建一个index.html文件
<!-- index.html文件内容 --> <h1>Hello Nginx</h1>
- 创建/data/images文件夹并在其中放入一些图片资源
-
配置信息
# 在nginx.conf配置文件的http块中加入一下配置
server {
# /(前缀) 表示当请求的URI和/匹配时,请求的URI将会和root所指定的路径进行拼接,获取到最终的资源路径
location / {
root /data/www;
}
location /images {
root /data;
}
}
# 当有多个location与请求的URI匹配时,选择前缀较长的location
- 重新加载Nginx的配置文件
nginx -s reload
- 测试
四、Nginx作为反向代理服务器
- 准备工作
- 创建/data/up1文件夹,并在其中创建index.html文件
- 配置信息
# 代理服务器的信息
server {
# 处理http://localhost:80请求
location / {
# 配置配代理的服务器的地址
proxy_pass http://localhost:8080;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
# 被代理服务器的信息
server{
listen 8080;
root /data/up1;
location / {
}
}
- 重新加载配置文件
- 测试
反向代理案例一
目标:在Windows浏览器中输入www.test.com,页面跳转到Centos中的Tomcat服务器的首页
- 配置IP地址和域名的映射关系
编辑C:/Windows/System32/drivers/etc/hosts文件,添加一下信息
# IP地址和域名的映射关系
192.168.48.128 www.test.com
- 配置信息
server {
listen 80;
server_name 192.168.48.128;
location / {
# 代理服务器的地址
proxy_pass http://localhost:8080;
root /data;
index index.html index.htm;
}
}
- 重新加载配置文件
- 测试
反向代理案例二
目标:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
访问 http://192.168.48.128:9001/edu/ 直接跳转到 192.168.48.128:8080
访问 http://192.168.48.128:9001/vod/ 直接跳转到 192.168.48.128:8081
- 配置
server {
# 监听9001端口
listen 9001;
server_name 192.168.48.128;
# 利用正则进行匹配,
location ~ /edu {
# 指定负载均衡的地址
proxy_pass http://localhost:8080;
}
location ~ /vod {
proxy_pass http://localhost:8081;
}
}
五、Nginx实现负载均衡
http {
# 配置服务器的集群,myserver为服务器集群的名字
# 这里配置的是代理服务器的信息
upstream myserver{
server 192.168.48.128:8080 weight=5;
server 192.168.48.128:8081;
}
server {
listen 80;
server_name 192.168.48.128;
location / {
proxy_pass http://myserver;
}
}
}
erver{
server 192.168.48.128:8080 weight=5;
server 192.168.48.128:8081;
}
server {
listen 80;
server_name 192.168.48.128;
location / {
proxy_pass http://myserver;
}
}
}