补充
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
dig yum install -y dig
反向代理
- 什么叫反向代理?
A(用户)–> B(在和C同一个机房,并且有公网)–> C(不带公网的机器)
- 什么场景会使用反向代理?
访问不带公网的内网机器
解决两台机器之间通信有障碍的问题
-
场景设置:
1)A B 两台机器,其中A只有内网,B有内网和外网
2)A的内网ip是 192.168.222.128
3)B的内网ip是 192.168.222.129 B的外网IP是 192.168.149.128
4)C为客户端,C只能访问B的外网IP,不能访问A或者B的内网IP -
需求目的:
C要访问到A的内网上的网站 -
配置
location /
{
proxy_pass http://ip;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
负载均衡
- 什么是负载均衡?
负载均衡就是,把请求均衡地分发到后端的各个机器上面。
比如,A B C D 四台WEB服务器,现在E要访问这4台服务器,F为Nginx反向代理服务器,可以让F把E的请求均衡地发送到
A B C D 4台服务器上
- 配置
upstream qq_com
{
ip_hash;
server 61.135.157.156:80;
server 125.39.240.113:80;
}
server
{
listen 80;
server_name www.qq.com;
location /
{
proxy_pass http://qq_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;
}
}
upstream apelearn
{
ip_hash;
server 115.159.51.96:80 weight=100;
server 47.104.7.242:80;
}
server
{
listen 80;
server_name www.apelearn.com;
location /
{
proxy_pass http://apelearn;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置nginx的ssl
让Nginx实现用https来访问网站。http是80端口,https是443端口。
https其实就是一种加密的http。
- 为什么要加密
举例:咱们要在网上银行汇款,在你汇款过程当中,你会输入银行卡的密码。如果不加密,这些数据在传输过程中就有可能被人截获。
如果使用了https,那么数据在传输过程中是会加密的。即使抓到了数据包,但是无法破解出来。
- 知识点:
http 1.1 http 2(https) - 配置
编译参数:–with-http_ssl_module模块
申请免费加密证书:freessl.cn,需要做一个txt解析记录,在阿里域名管理那里。
www.wosign.com(沃通)收费
cd /etc/nginx/
mkdir ssl
touch ca bbs.crt bbs.key
把生成的3个key复制进这3个文件里
shou
修改虚拟主机配置
server {
listen 80 443;
server_name www.zwxf.top;
ssl on;
ssl_certificate /etc/nginx/ssl/xxx.crt;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}
防火墙开端口
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload
测试:
curl -k -H “host:bbs.aminglinux.cc” https://192.168.222.128/index.php
php-fpm配置
配置文件:/usr/local/php-fpm/etc/php-fpm.conf
包含了一个目录 php-fpm.d/*.conf
www.conf 就是其中其配置文件
- www.conf配置详解
pool 名字: [www] 可以自定义,启动后,ps aux |grep php-fpm 看最右侧,就是pool的名字
listen 指定监听的IP:port或者socket地址,如果两者都定义,后面的生效。
这个地址需要和nginx配置文件里面的那个fastcgi_pass所指定的地址一致,否则就会502,nginx虚拟主机配置文件的写法:fastcgi_pass unix:/tmp/www.socket;
如果监听的是socket文件,那么要保证nginx服务用户(nginx)对该socket文件有读写权限,否则502
listen.mode 指定socket文件的权限
pm = dynamic 动态模式
pm.max_children = 5 最大子进程数
pm.start_servers = 2 启动几个子进程
pm.min_spare_servers = 1 空闲时,最少不能少于几个子进程
pm.max_spare_servers = 3 空闲时,最多不能多于几个子进程
pm.max_requests = 500 子进程最多可以处理个多少requests
php_flag[display_errors] = off ###排障时用,设成on。
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reporting] = E_ALL
配置slow 日志
定义执行php脚本执行慢的日志
slowlog = /tmp/php.slow ##生产中放在其他路径下
request_slowlog_timeout = 1 ###定义超时时间
eq:测试,配置phpinfo.php
<?php phpinfo(); sleep (2); echo 111; ?>用curl访问,再去slowlog日志去查看。
curl -k -H “host:bbs.aminglinux.cc” https://127.0.0.1/phpinfo.php
配置open_basedir
在php.ini里,用来定义php服务所能够允许活动的目录,多个目录用冒号分割,如果配置了,这个参数,必须添加/tmp目录,
php_admin_value[open_basedir] = /data/wwwroot/blog.aminglinux.cc:/tmp
如果有多个网站时,不建议在这里定义,建议在php-fpm(优先级高于php.ini)的配置文件www.conf,定义多个pool来定义。
配置多个pool,定义多个配置文件,在配置文件中指定不同的listen地址 不同的 [pool_name]
grep -v '^;' www.conf |grep -v '^$' >> bbs.conf
[blog]
user = php-fpm
group = php-fpm
listen = /tmp/blog.socket ##记得修改nginx虚拟主机的配置
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
slowlog = /tmp/php.slow
request_slowlog_timeout = 1
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reporting] = E_ALL
php_admin_value[open_basedir] = /data/wwwroot/blog.aminglinux.cc:/tmp
[bbs]
user = php-fpm
group = php-fpm
listen = /tmp/bbs.socket
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
slowlog = /tmp/php.slow
request_slowlog_timeout = 1
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[error_reporting] = E_ALL
php_admin_value[open_basedir] = /data/wwwroot/bbs.aminglinux.cc:/tmp
查看php.ini路径:
1) /usr/local/php-fpm/bin/php -i |head
Configuretion file (php.ini) Path =>/usr/local/php-fpm/etc
2)用phpinfo
<?php
phpinfo();
?>
禁掉phpinfo
在php.ini中找到disable_functions,改成:disable_functions = phpinfo
/usr/local/php-fpm/sbin/php-fpm -t 检查配置文件是否有错。
补充:
curl -k -H "host:bbs.aminglinux.cc" https://127.0.0.1/phpinfo.php
-k 访问https的时候加
修改玩php.ini ,要重启php服务
grep -v '^;' www.conf | grep -v '^$'
MariaDB重置密码
- 记得:mysqladmin -uroot -padminlinux password “123456789”
- 不记得:(5.7以后的版本)
1)编辑/etc/my.cnf
增加:skip-grant
重启服务
2)登录MariaDB,执行
use mysql 切换到mysql库
desc user 查看user表的所有字段
update user set authentication_string=password(“aming-linux”) where user=‘root’;
3)退出MariaDB,删除/etc/my.cnf里面的skip-grant, 重启服务
4)用新密码登录即可
常识:
mysql在5.7.36版本之后把密码字段存到了authentication_string字段里,在之前版本存在password字段里。
update user set password=password(“aming-linux”) where user=‘root’;