1、nginx虚拟主机
[root@server1 conf]# pwd
/usr/local/lnmp/nginx/conf
[root@server1 conf]# vim nginx.conf
http{
...
121 server{
122 listen 80;
123 server_name www.westos.org;
124
125 location /{
126 root /www1;
127 index index.html;
128 }
129 }
130 server{
131 listen 80;
132 server_name www.linux.org;
133
134 location /{
135 root /www2;
136 index index.html;
137 }
138 }
139 }
[root@server1 conf]# cd /www1
[root@server1 www1]# cat index.html
www.westos.org
[root@server1 www1]# cd /www2
[root@server1 www2]# cat index.html
www.linux.org
[root@server1 www2]# nginx -s reload
2、https的实现
需要编译ssl模块
cd nginx-1.17.1/
yum install -y openssl-devel # 编译ssl模块需要的依赖包
./configure --prefix=/usr/local/nginx/ --with-http_ssl_module --with-file-aio
make && make install
cd /etc/pki/tls/certs/
make cert.pem # 制作证书
cp cert.pem /usr/local/nginx/conf/ # 证书在 /usr/local/nginx/conf/才会生效
cd /usr/local/nginx/conf/
vim nginx.conf
server {
listen 443 ssl; # 监听端口为443
server_name www.westos.org;
ssl_certificate cert.pem; # 证书位置
ssl_certificate_key cert.pem; # 私钥位置
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5; # 密码加密方式
ssl_prefer_server_ciphers on;
location / {
root /web; # 根目录位置
index index.html index.htm;
}
}
server {
listen 80;
server_name www.westos.org;
location / {
root /web;
index index.html;
}
}
3、重定向
[root@server1 sbin]# vim nginx.conf
server{
listen 80;
server_name www.westos.org ;(这里可以有多个域名,nginx支持正则匹配,可以减少server数量)
rewrite ^(.*)$ https://www.westos.org permanent(永久的);301永久重定向,去掉这个就是临时重定向
}
[root@server1 sbin]# nginx -t
[root@server1 sbin]# nginx -s reload
4、并发、速率限制
[root@server1 conf]# vim nginx.conf
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
允许访问html/download/的内容
location /download/ {
limit_req zone=one burst=1; //并发限制为5
limit_rate 50k; //速率限制
}
[root@server1 conf]# nginx -s reload
客户端测试:一次并发请求10个,我们设置的并发量是1,因此只会成功1个
测试:wget http://172.25.27.1/download/* 看到下载速率不大于50k
5、访问控制
[root@server1 admin]# pwd
/usr/local/lnmp/nginx/html/admin
[root@server1 admin]# vim index.html
admin page
location /admin/ {
//白名单,黑名单只需要将allow和deny互换位置
allow 172.25.29.0/24; //访问控制,与添加allow和deny的顺序有关系
deny all; //拒绝所有
}
6、缓存设置
[root@server1 conf]# vim nginx.conf
location ~ .*\.(gif|jpg|png)$ {
expires 30d; //缓存30天
}
7、防止恶意域名解析
[root@server1 conf]# vim nginx.conf
server {
listen 80;
server_name _;
return 500;
8、防盗链
盗链原理:客户去访问server2上的某个资源,但serer2上边没有,所有做了一个假的资源,该资源指向服务器server1上的资源,所以用户能访问到该资源,但是走的是server2的流量。
1)、server的默认发布目录存在资源
[root@server1 conf]# vim nginx.conf
server{
listen 80;
server_name www.westos.org westos.org
location /{
root /www1;
index index.html;
}
[root@server1 www1]# ls images/ //server1的/www1/images下有一张图片
iso7.gif
server2的默认发布目录下有一个假的资源
[root@server2 html]# cat index.html
<html>
<body>
<img src="http://www.westos.org/images/iso7.gif"> #指向server1的资源
</body>
</html>
//server2将其默认发布页设为server1主机上的图片
[root@server2 html]# /etc/init.d/httpd restart
所以客户访问server2的该资源时实际上访问的是server1上的资源
2)、server1防盗链
[root@server1 conf]# vim nginx.conf
server{
listen 80;
server_name www.westos.org westos.org
location ~ \.(gif|jpg|png)$ {
root /www1;
valid_referers none blocked www.westos.org;
if ($invalid_referer) {
return 403;
}
}
这样配置,再遇到盗链的时候直接报403
3)、我们不仅可以在其盗链时直接拒绝,还可以做个重定向,在遇到这个的时候,让盗链者访问我们指定的资源
[root@server1 conf]# vim nginx.conf
location ~ \.(gif|jpg|png)$ {
root /www1;
valid_referers none blocked www.westos.org;
if ($invalid_referer) {
rewrite ^/ http://bbs.westos.org/daolian.jpg;
}
}
server{
listen 80;
server_name bbs.westos.org;
location / {
root /www2;
index index.html;
}
}
9、文字压缩
(1)、配置
vim conf/nginx.conf
33 gzip on; //开启gzip压缩
34 gzip_min_length 20; //设置将被gzip压缩的响应的最小长度(K)
35 gzip_comp_level 3; //设置响应的gzip压缩级别(1--9)
36 gzip_types text/plain application/x-javascript text/css application/xml text/javascript
application/x-httpd-php image/jpeg image/gif image/png;
(2)、测试
打开浏览器,清空缓存(ctrl + shift + delete)
访问nginx服务器(172.25.60.1)
curl查看:ctrl+shift+c--->Network--->reload--->看Size和Transf
10、图片压缩
需要重新编译,导入第三方模块
/usr/local/nginx/sbin/nginx -V
./configure --help | grep image
./configure --prefix=/usr/local/nginx --with-file-aio --with-http_realip_module --with-http_image_filter_module=dynamic
make
cd objs/
cp -f nginx /usr/local/nginx/sbin/nginx
mkdir /usr/local/nginx/modules
cp ngx_http_image_filter_module.so /usr/local/nginx/modules
cd /usr/local/nginx/
vim conf/nginx.conf
load_module modules/ngx_http_image_filter_module.so; //导入模块
gzip on;
location /download/ {
image_filter resize 100 150;
}
nginx -s reload