20190117-18、19nginx反向代理、负载均衡、ssl、php-fpm配置、mariadb密码重置

补充

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重置密码

  1. 记得:mysqladmin -uroot -padminlinux password “123456789”
  2. 不记得:(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’;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值