一、配置nginx的虚拟主机
虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
1、编辑nginx的配置文件,生成虚拟主机:
125
126 server {
127 listen 80;
128 server_name www.westos.org;
129
130 location / {
131 root /www1;
132 index index.html;
133 }
134 }
135 server {
136 listen 80;
137 server_name bbs.westos.org;
138
139 location / {
140 root /www2;
141 index index.html;
142 }
143 }
144 }
建立/www1和/www2,并且编写index.html
[root@server1 conf]# mkdir /www1
[root@server1 conf]# mkdir /www2
[root@server1 conf]# cd /www1/
[root@server1 www1]# vim index.html
<h1>www.westos.org</h1>
[root@server1 conf]# cd /www2/
[root@server1 www2]# vim index.html
<h1>bbs.westos.org</h1>
在物理主机中测试
首先加解析:
[root@foundation66 kiosk]# vim /etc/hosts
测试:
二、实现https加密
1、编辑nginx的配置文件
107 server {
108 listen 443 ssl;
109 server_name www.westos.org; #访问www.westos.org
110
111 ssl_certificate cert.pem; #https认证的锁和钥匙
112 ssl_certificate_key cert.pem;
113
114 ssl_session_cache shared:SSL:1m;
115 ssl_session_timeout 5m;
116
117 ssl_ciphers HIGH:!aNULL:!MD5;
118 ssl_prefer_server_ciphers on;
119
120 location / {
121 root /www1; #访问本地/www1的index.html文件
122 index index.html index.htm;
123 }
124 }
[root@server1 conf]# nginx -t #检测语法
[root@server1 conf]# nginx -s reload #重新加载 nginx服务
2、测试访问:https://www.westos.org
这个出现说明:你的网站存在问题,是继续还是返回。可以点击Advanced,修改安全证书
再次访问:
三、重定向
1、访问www.westos.org时调转到https://www.westos.org
nginx配置文件的修改
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org;
129 rewrite ^/(.*)$ https://www.westos.org; #当在这行后面加入permanent,访问时就会出现301 Moved Permanently永久重定向
130
131 location / { #也可以把这个location注释调,因为在配置文件http服务那块已经写过,当这里调用location本地时,可以直接调用http服务的location
132 root /www1;
133 index index.html;
134 }
135 }
[root@server1 conf]# nginx -s reload
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org;
129 rewrite ^/(.*)$ https://www.westos.org/$1 permanent; #可以访问www.westos.org的下级目录
130
[root@server1 conf]# nginx -s reload
2、将westos.org重定向到www.westos.org
(1)修改配置文件
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
130
[root@server1 conf]# nginx -s reload
(2)在物理主机中加入本地解析
[root@foundation66 kiosk]# vim /etc/hosts
(3)测试
3、访问~/bbs时重定向到https://bbs.westos.org
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 rewrite ^/bbs$ http://bbs.westos.org; #访问以bbs结尾的网址时跳转到http://bbs.westos.org
130 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
131
[root@server1 conf]# nginx -s reload
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 rewrite ^/bbs$ http://bbs.westos.org;
130 rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1; #可以访问以bbs的下级目录结尾的网址
131
[root@server1 conf]# nginx -s reload
4、反向重定向bbs.westos.org—> https://www.westos.org/bbs/
[root@server1 conf]# vim nginx.conf
126 server {
127 listen 80;
128 server_name www.westos.org westos.org;
129 #rewrite ^/bbs$ http://bbs.westos.org;
130 #rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1;
131 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
132
133 location / {
134 root /www1;
135 index index.html;
136 }
137 }
138 server {
139 listen 80;
140 server_name bbs.westos.org;
141 rewrite ^(.*)$ http://www.westos.org/bbs$1;
142 # location / {
143 # root /www2;
144 # index index.html;
145 # }
146 }
147 }
[root@server1 conf]# nginx -s reload
四、防止恶意
1、返回500报错
修改配置文件
[root@server1 conf]# vim nginx.conf
40 server {
41 listen 80;
42 server_name _; #当所有主机到达访问默认页面,返回500报错
43 return 500;
44
[root@server1 conf]# nginx -s reload
(2)跳转到指定站点
[root@server1 conf]# vim nginx.conf
40 server {
41 listen 80;
42 server_name _;
43 #return 500;
44 rewrite ^(.*) http://www.westos.org; #所有主机到达时,重定向到指定站点
45 #charset koi8-r;
[root@server1 conf]# nginx -s reload
五、访问控制
[root@server1 conf]# vim nginx.conf
127 server {
128 listen 80;
129 server_name www.westos.org westos.org;
130 #rewrite ^/bbs$ http://bbs.westos.org;
131 #rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1;
132 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
133
134 location / {
135 root /www1;
136 index index.html;
137 allow 172.25.66.250; #只允许物理主机访问,不允许其他主机访问
138 deny all;
139 }
140 }
[root@server1 conf]# nginx -s reload
测试:curl -I www.westos.org
拒绝客户端上传照片
首先新建一个images目录,
[root@server1 ~]# cd /www1
[root@server1 www1]# mkdir images
[root@server1 conf]# vim nginx.conf #编辑配置文件,/usr/local/lamp/nginx/conf
127 server {
128 listen 80;
129 server_name www.westos.org westos.org;
130 #rewrite ^/bbs$ http://bbs.westos.org;
131 #rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1;
132 #rewrite ^/(.*)$ https://www.westos.org/$1 permanent;
133
134 location / {
135 root /www1;
136 index index.html;
137 allow 172.25.66.250;
138 deny all;
139 }
140 location ~ ^/images/.*\.(jpg|gif)$ { #访问本地/images目录下以(jpg/gif)结尾的照片
141 deny all; #拒绝所有客户端上传照片
142 }
[root@server1 conf]# nginx -t #检测语法
[root@server1 conf]# nginx -s reload #重新加载服务
六、对客户端并发量,下载速度的限制
1、限制客户端请求的并发量
[root@server1 nginx]# cd /www1
[root@server1 www1]# mkdir download
[root@server1 www1]# cd images
[root@server1 images]# cp vim.jpg ../download
[root@server1 nginx]# vim conf/nginx.conf
38 #gzip on;
39 limit_conn_zone $binary_remote_addr zone=addr:10m; #限制带宽
127 server {
140 location ~ ^/images/.*\.(jpg|gif)$ {
141 deny all;
142 }
143 location /download/ {
144 root /www1;
145 limit_conn addr 1; #并发量为1
146 }
147 }
[root@server1 nginx]# nginx -t
[root@server1 nginx]# nginx -s reload
在物理主机中做压力测试
[root@foundation66 kiosk]# ab -c1 -n 10 http://www.westos.org/download/vim.jpg
[root@foundation66 kiosk]# ab -c10 -n 10 http://www.westos.org/download/vim.jpg
2、限制客户端下载速率
[root@server1 nginx]# vim conf/nginx.conf
38 #gzip on;
39 limit_conn_zone $binary_remote_addr zone=addr:10m;
40 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #限制下载速率
41
129 server {
142 location ~ ^/images/.*\.(jpg|gif)$ {
143 deny all;
144 }
145 location /download/ {
146 root /www1;
147 limit_conn addr 1;
148 limit_req zone=one burst=5;
149 limit_rate 50k; #限制速率为50k
150 }
151 }
[root@server1 nginx]# nginx -t
[root@server1 nginx]# nginx -s reload
七、去掉不必要的日志记录
[root@server1 nginx]# vim conf/nginx.conf
access_log off;
八、防盗链机制
在server6的apache默认发布文件下编辑index.html文件
[root@server6 ~]# yum install -y httpd
[root@server6 ~]# /etc/init.d/httpd start
[root@server6 ~]# cd /var/www/html/
[root@server6 html]# vim index.html
<html>
<body>
<br>图片</br>
<img src="http://www.westos.org/images/vim.jpg">
</body>
</html>
在物理主机中加入本地解析(因此我们可以根据这种方式盗取server6上方 图片信息,这样就属于盗链行为)
[root@foundation66 kiosk]# vim /etc/hosts
172.25.66.6 daolian.westos.org
我们可以在server1的nginx配置文件中加入防盗链的行:让图片显示不出来
[root@server1 nginx]# vim conf/nginx.conf
144 location ~ ^/images/.*\.(jpg|gif)$ {
145 expires 30;
146 root /www1;
147 valid_referers none blocked www.westos.org;
148 if ($invalid_referer) {
149 return 403;
150 }
[root@server1 nginx]# nginx -s reload
我们还可以重定向,当访问daolian.westos.org时,重定向到/www2
[root@server1 nginx]# vim conf/nginx.conf
137 location / {
138 root /www1;
139 index index.html;
140
141 allow 172.25.66.250;
142 deny all;
143 }
144 location ~ ^/images/.*\.(jpg|gif)$ {
145 expires 30;
146 root /www1;
147 valid_referers none blocked www.westos.org;
148 if ($invalid_referer) {
149 # return 403;
150 rewrite ^/ http://bbs.westos.org/daolian.jpg; #当访问/images目录下的图片时,重定向到bbs.westos.org/下面
151 }
152 }
159 }
160 server {
161 listen 80;
162 server_name bbs.westos.org;
163 #rewrite ^(.*)$ http://www.westos.org/bbs$1;
164 location / {
165 root /www2;
166 index index.html;
167 }
168 }
169 }
[root@server1 nginx]# nginx -s reload