Nginx学习之--配置文件

一、配置文件理解 

# 编辑配置文件
vi /usr/local/nginx/conf/nginx.conf
# 只看未注释的
# 代表并发处理的数量,值越大并发越大,只要设备支持
worker_processes  1;

# nginx服务器和用户网络连接
events {
    # 代表 worker_processes 最大连接数
    worker_connections  1024;
}

# 大部分修改都在这里,代理、缓存、日志等等(注释掉的我这里删除了)
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        # nginx监听端口号
        listen       80;
        # 主机名称
        server_name  localhost;
        # 当路径包含某个值时进行的操作    
        location / {
            root   html;
            index  index.html index.htm;
        }
        # 错误页面
        error_page   500 502 503 504  /50x.html;
        # 当路径包含某个值时进行的操作
        location = /50x.html {
            root   html;
        }
    }
}

二、反向代理

# 1、安装tomcat和jdk并配置
# 2、把8080端口加入防火墙,或者关闭防火墙
# 3、修改nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        # 这个是把原先的local改成IP地址了
        server_name  192.168.74.132;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            # 这个是新增
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
...
# 保存
# 热部署刷新一下
./nginx -s reload
# 访问
http://192.168.74.132/



# 监听端口,根据路径访问不同的地址
# 编辑配置文件,新增一个server
server {
        # 监听9001端口
        listen  9001;
        server_name 192.168.74.132;
        # ~ 代表正则,路径中包含one则跳转
        location ~ /one/ {
            proxy_pass http://127.0.0.1:8001;
        }
        location ~ /two/ {
            proxy_pass http://127.0.0.1:8002;
        }
    }

    server {
...


#################### 扩展 ######################
# location说明
# 语法:
location [= | ~ | ~* | ^~] URI {
}
# 解释
# =:用于不含正则表达式的URI前,要求请求字符串与URI严格匹配,如果匹配成功,就停止向下搜索立即处理
# ~:用于表示URI包含正则表达式,并且区分大小写
# ~*:用于表示URI包含正则表达式,并且不区分大小写
# ^~:用于不含正则表达式的 URI前,要求Nginx服务器找到标识URI和请求字符串匹配度最高的location
# 立即使用此location处理请求,而不再使用location块中的正则URI和请求字符串做匹配。
# PS:如果URI包含正则表达式,则必须要有~ 或者 ~* 标识

三、负载均衡

# 编辑配置文件
vi /usr/local/nginx/conf/nginx.conf
# http 中新增
http{
...
    #gzip  on;
    # 新增 upstream 
    # myserver 是自定义的名字
    upstream myserver{
        server 115.28.52.63:8001 weight=1;
        server 115.28.52.63:8002 weight=1;
    }
    # 修改server
    server {
        listen       80;
        server_name  192.168.74.132;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass http://myserver;
            index  index.html index.htm;
        }
...

#################### 扩展 ###################
1、轮询
每个请求按实际顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自带剔除
2、weight
weight 代表权重,默认为1,权重越高被分配的客户端越高
指定轮询机率,wight和访问比率成正比,用于后端服务器性能不均的情况,例如:
upstream server_pool{
    server 192.168.1.1 weight=10;
    server 192.168.1.2 weight=9;
}
3、ip_hash
每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。例如
upstream server_pool{
    ip_hash;
    server 192.168.1.1:80;
    server 192.168.1.2:81;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
    server 192.168.1.1:80;
    server 192.168.1.2:80;
    fair;
}
###############################################

四、动静分离

# 1、动静分离,把动态请求和静态请求通过nginx分开
# 把静态文件单独放在一个服务器上,另一种是动态静态文件混合放在一起,通过nginx来区分
# 在根目录下创建两个文件夹,www和image 一个放html文件一个放图片文件,自己创建的文件夹
# 修改配置文件
...
    #gzip  on;

    server {
        listen       80;
        server_name  192.168.74.132;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        # 路径包含www时
        location /www/ {
            root   /data/;
            index  index.html index.htm;
        }
        # 路径包含image时
        location /image/ {
            root  /data/;
            # 列出当前文件夹中的内容
            autoindex  on;
        }
...
# 重新部署
./nginx -s reload

# 测试
http://192.168.74.132/image/1.png
# 会把当前文件夹中的文件列出来(autoindex 参数的作用)
http://192.168.74.132/image/
# 访问页面
http://192.168.74.132/www/a.html

五、高可用的集群

# 当前nginx宕机时,也可用正常访问服务器,就是所谓的高可用
# 通过keepalived 来实现nginx的主备机制,当一台宕掉,另一台就接手
# 两台机器都按照nginx、keepalived 一台当作主、一台当作备
# 安装keepalived 
yum install -y keepalived
# 验证
rpm -q -a keepalived
# 编辑keepalived 配置文件
vi /etc/keepalived/keepalived.conf
# 配置文件内容
# 改天单独学一下keepalived
# 原理就是 两台机器都按照keepalived 和 nginx,启动nginx 和 keepalived。
# 编写一个测试脚本,来检测nginx 有没有挂,通过keepalived 调用这个脚本
# 当一台的nginx挂掉就用另一台。(keepalived 对外提供一个浮动IP,通过这个做到无感切换)

 

发布了81 篇原创文章 · 获赞 15 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章