Linux架构 Nginx常见问题

Nginx常见问题

keepalived多台机器vip漂移

抢占式

# 安装nginx和keepalived
yum install -y nginx keepalived

# 主节点配置文件
global_defs {
    router_id lb01
}
vrrp_script ljy {
        script "/root/check_web.sh"
        interval 1
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
    track_script {
        ljy
    }
}

# 备节点配置文件
global_defs {
    router_id lb02
}
vrrp_script ljy {
        script "/root/check_web.sh"
        interval 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
    track_script {
        ljy
    }
}

global_defs {
    router_id lb03
}
vrrp_script ljy {
        script "/root/check_web.sh"
        interval 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
    track_script {
        ljy
    }
}

非抢占式

global_defs {
    router_id lb01
}
vrrp_script ljy {
        script "/root/check_web.sh"
        interval 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 120
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
    track_script {
        ljy
    }
}

global_defs {
    router_id lb02
}
vrrp_script ljy {
        script "/root/check_web.sh"
        interval 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
    track_script {
        ljy
    }
}

global_defs {
    router_id lb03
}
vrrp_script ljy {
        script "/root/check_web.sh"
        interval 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3
    }
    track_script {
        ljy
    }
}

Nginx多server匹配优先级

##域名查找是后往前查询的先查根域
1.精确匹配                 www.test1.com
2.通配符在前面的域名         *.test1.com
3.通配符在后面的域名         www.test1.*
4.使用正则表达式的域名       (blog|www).test1.com
5.在listen端口后面加default_server的域名
6.最后才按照配置文件的先后顺序

nginx禁止IP访问

[root@web01 conf.d]# vim server2.conf

server {
    listen 80 default_server;
    server_name _;
    #使用return跳转到404
    return 404;
    #使用return跳转到主页面
    return http://www.test1.com/$request_uri;
    #使用rewrite跳转到主页面
    rewrite (.*) http://www.test1.com/$1;
}

# 配置主站点
server{
    listen 80;
    server_name www.test1.com;

    location / {
            root /code/www;
            index index.html;
    }
}

# 优化后的404页面
server{
    listen 80;
    server_name www.test1.com;

    location / {
            root /code/www;
            index index.html;
    }

    error_page 404 /404.html;
            location = /code/www/404.html {

            }
}

server {
    listen 80 default_server;
    server_name _;
    return http://www.test1.com/error;
}

nginx灵活运用include

# 1.创建两个目录
mkdir /etc/nginx/conf.d/online
mkdir /etc/nginx/conf.d/offline

# 2.把开启需要的配置文件放入online

# 3.修改nginx主配置文件
vim /etc/nginx/nginx.conf
include /etc/nginx/conf.d/online/*.conf;

# 4.目录结构展示
[root@web01 conf.d]# tree
.
├── offline
│ ├── blog.conf
│ ├── cdx.conf
│ ├── daili.conf
│ ├── default.conf
│ ├── diannao.conf
│ ├── dl.conf
│ ├── keep.conf
│ ├── pc.conf
│ ├── test.conf
│ └── wz.conf
└── online
├── deny_ip.conf
└── www.conf

nginx站点目录路径

# 使用的是相对路径,需要把文件放入location指定的目录下
root /code/www;
# 使用的是绝对路径,只需把文件放入所在站点目录下
alias /code/www;

# 编写图片文件
vim online/image.conf
server{
    listen 80;
    server_name www.test1.com;

    location /picture {
            root /code;
    }
}

# 创建图片存放站点目录
mkdir -p /code/picture
/code/10.jpg

## alias线上配置
server{
    listen 80;
    server_name www.test1.com;

    location /picture {
            root /code;
    }

    location ~* ^.*\.(png|jpg|gif)$ {
        alias /code/images/;
    }
}

nginx的try_files使用

vim online/try.conf
server{
    listen 80;
    server_name www.test1.com;

    location / {
            try_files $uri $uri/ @java;

    location @java {
     proxy_pass http://10.0.0.8:8080;
        }
    }

作业:

1.防盗链

#防盗链配置
server {
        listen 80;
        server_name www.png.com;
        root /code;
        index index.html;
        location / {
}
        location ~ .*\.(png|jpg|gif)$ {
                valid_referers none blocked www.baidu.com;
                        if ($invalid_referer){
#                       rewrite ^//ssss.png break;
                        return 403;

                }
        }
}         

location ~ .*\.(png|jpg|gif)$
    location:输入的url后面跟的路径,如果路径与location后的内容相匹配就执行location下的内容
    ~:开始正则匹配
    .*:.表示出换行符/n之外的所有字符,*就是匹配0次或多次。
    \.:\转译符号将具有特殊含义的字符,转为纯字符型,.这里有包含任意字符的意思,所以需要转译
    (png|jpg|gif)$:表示结尾要是以png、jpg、gif为结尾

valid_referers none blocked www.baidu.com
    这个是如果返回的头部referer为www.baidu.com那么就不会执行valid_referer下面内容,反之就会

if ($invalid_referer)
    这个含义就是结合上面的valid_referer,如果请求头部为www.baidu.com,那么就$invalid_referer就会被赋值为0,就不会执行返回错误代码401,如果不是www.baidu.com,那么就会赋值为1,就会执行下面内容

return 403:返回错误代码403

2.隐藏nginx版本

#修改nginx主配置文件,在配置文件中加入以下配置重启即可。
server_tokens off;

img

3.如何开启gzip压缩访问

http块内或者在单个server块里添加后重启nginx ./nginx -s reload

#开启gzip
gzip  on;  
#低于1kb的资源不压缩 
gzip_min_length 1k;
#压缩级别1-9,越大压缩率越高,同时消耗cpu资源也越多,建议设置在5左右。 
gzip_comp_level 5; 
#需要压缩哪些响应类型的资源,多个空格隔开。不建议压缩图片.
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;  
#配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_disable "MSIE [1-6]\.";  
#是否添加“Vary: Accept-Encoding”响应头
gzip_vary on;

rpm删除所有相关安装包

# rpm搜索安装包
rpm -qa|grep server

# 删除搜索到的安装包
rpm -e $(rpm -qa|grep server)

# 再次通过rpm搜索安装包
rpm -qa|grep server
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇