利用Nginx实现lb集群
- 安装epel扩展包
yum install -y epel-release
- yum安装Nginx
yum install -y nginx
- 创建虚拟主机配置文件目录
mkdir -p /etc/nginx/vhosts
- 创建lb配置文件
vim /etc/nginx/vhosts/lb.conf
- 新增以下内容
upstream abc.com{
server 192.168.200.128;
server 192.168.200.129;
}
server{
listen 80;
server_name www.abc.com;
location / {
proxy_pass http://abc.com/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 修改ngix主配置文件
vim /etc/nginx/nginx.conf
- 在include /etc/nginx/conf.d/*.conf;下面新增以下内容
include vhosts/*.conf;
- 检测nginx配置是否正确
nginx -t
- 启动nginx服务
/etc/init.d/nginx start
- 查看nginx是否启动
ps aux | grep nginx
- 测试访问nginx负载
curl -xlocalhost:80 http://www.abc.com/1.html
Linux运维安全
-
使用一台服务器作为跳板机来登陆其他服务器,其他服务器统一做IP限制(/etc/hosts.allow,/etc/hosts.deny)
-
尽量使用密钥,避免使用密码登陆服务器(PermitRootLogin without-password)
-
禁止root直接登陆服务器,只允许普通用户登陆,普通用户su到root(PermitRootLogin no),在sshd配置文件中修改以下内容
vim /etc/ssh/sshd_config
将#PermitRootLogin yes修改为PermitRootLogin no
-
服务器上用不到的端口关闭,用不到的服务停掉(使用ntsysv命令关闭服务)
-
应用程序环境软件(apache,nginx,php,mysql)避免使用太老版本
-
不可逆操作在操作前一定要备份相关的数据或配置文件
-
重要数据一定要备份,尽量本地和远程留存两份
-
web禁止目录浏览(apache:Options -Indexes ; nginx:在编译时加上- -without-http_autoindex_module)
编辑apache主配置文件,修改如下内容
<Directory 网站目录绝对路径>
Options FollowSymLinks
Options -Indexes #新增此行
AllowOverride None
</Directory>
- web可写目录下禁止解析php(nginx:location ~ /data/.*.php${deny all;} ; apache:php_admin_flag engine off)
nginx:编辑主配置文件在location ~ \.php$代码前加入以下内容
location ~ /data/.*\.php$ {
deny all;
}
apache:编辑apache主配置文件,修改如下内容
<Directory 网站可写目录绝对路径>
Options FollowSymLinks
Options -Indexes
AllowOverride None
php_admin_flag engine off #新增此行
</Directory>
- 设定php禁用函数,在php.ini中增加以下内容:
disable_functions = popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo
- 网站目录下禁止有test命名的文件如test.php,test.html…
-php.ini中关闭display_error(网站报错调试时可打开平时关闭) - 站点后台访问需要限定IP访问,如下:
apache:在虚拟主机配置文件中加入以下内容
<filesmatch "(.*)admin(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 2.2.2.2 #允许2.2.2.2这个IP访问
</filesmatch>
nginx:假如我的站点后台地址为: http://www.abc.com/admin.php 那么我想限制只有个别ip可以访问后台,那么需要在配置文件中增加以下内容
location ~ .*admin.* {
allow 1.1.1.1; #允许访问的IP
allow 12.12.12.0/24; #允许访问的IP段
deny all;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
}
}
- 建议每个站点都配置访问日志,并且做日志切割压缩归档,磁盘空间允许的话,尽量存放比较久的时间
- 尽量避免开放FTP服务,如果要开放要满足两个原则:1、限定IP访问(iptables实现);2、密码设置一定要复杂
个人linux学习系列完