每日知识(查漏补缺)
11—3(nginx)
1.防止字符乱码
charset utf-8;2.重定向页面
error_page 503 @temp;
location @temp {
default_type text/html;
return 302(可以跳转到页面) 'https://www.baidu.com';
}3.什么是CGI
早期 Web 服务器与后端脚本(如 PHP、Perl、Python)通信的标准协议。4.为什么会有FastCGI?
本质是为解决传统 CGI 在高并发场景下的性能瓶颈而设计的 “增强版 CGI 协议”5.什么是php-fpm
PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个实现了Fastcgi的程序,并且提供进程管理的功能6.(项目)Ubuntu设置时间跟文件大小
[root@ubuntu2204 ~]#vim /etc/php/8.1/fpm/php.ini
date.timezone = Asia/Shanghai
post_max_size = 100M #限制整个 POST 请求的总数据量
upload_max_filesize = 100M #仅限制单个上传文件的大小7.(项目)Ubuntu设置端口的及响应的
[root@ubuntu2204 ~]#vim /etc/php/8.1/fpm/pool.d/www.conf
listen = 127.0.0.1:9000
;listen = /run/php/php8.1-fpm.sock
pm.status_path = /pm_status #设置查看其状态的
ping.path = /ping #设置查看是否ping通(回应的)8.解决Ubuntu数据库所有服务器上都可用网络接口
[root@ubuntu2204 ~]#vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.09.什么是会话保持
当用户登陆一个网站服务器,网站服务器会将用户的登陆信息存储下来,以保证我们能够一直处于 ”登陆在线“ 状态。
客户端:cookies
服务端:sessionID10.(会话保持)解决工具
redis
redis-cli #查看session 信息
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:393ff522ed2a7e26ba44f6d925f991f2"11.根据不同的URL请求调度到不同的资源池
[root@proxy01 conf.d]# cat proxy_agent.ops.net.conf
upstream user {
server 172.16.1.8;
}
upstream pass {
server 172.16.1.7;
}
server {
listen 80;
server_name agent.ops.net;
location /user {
proxy_pass http://user;
include proxy_params;
}
location /pass {
proxy_pass http://pass;
include proxy_params;
}
}12.Proxy添加/与不添加/
1.带 / 意味着Nginx代理会修改用户请求的URL,将location匹配的URL进行删除。
2.不带 / 意味着Nginx代理不会修改用户请求的URL,而是直接代理到后端应用服务器。13.根据请求设备进行调度
# 根据不同的浏览器调度到不同的资源池
[root@proxy01 conf.d]# cat proxy_agent.ops.net.conf
upstream pc {
server 172.16.1.7:80;
}
upstream phone {
server 172.16.1.8:80;
}
server {
listen 80;
server_name agent.ops.net;
location / {
#默认都走pc
proxy_pass http://pc;
include proxy_params;
default_type text/html;
charset utf-8;
#如果是安卓或iphone,则走phone
if ( $http_user_agent ~* "android|iphone|iPad" ) {
proxy_pass http://phone;
}
#如果是IE浏览器,要么拒绝,要么返回一个好的浏览器下载页面
if ( $http_user_agent ~* "MSIE" )
{
return 200 '浏览器真棒!';
}
}
}
#区别就是$http_user_agent 后面跟的内容不同11—4(nginx)
Rewrite 生产案例实践
^表示字符串的开始/表示匹配根路径本身$表示字符串的结束
所以 ^/$ 专门匹配网站的根路径访问,也就是用户直接访问
1.据用户浏览器请求头中携带的语言调度到不同的页面
if ($http_accept_language ~* "zhCN|zh") {
set $language /zh;
}
if ($http_accept_language ~* "en") {
set $language /en;
}
rewrite ^/$ /$language; 2.用户通过手机设备访问 url.ops.net,跳转至url.ops.net/m
if ($http_user_agent ~* "android|iphone|ipad") {
rewrite ^/$ /m;
}
echo m > /code/m/index.html3.用户通过手机设备访问 url.ops.net 跳转至m.ops.net
if ($http_user_agent ~* "android|iphone|ipad") {
rewrite ^/$ http://m.ops.net;
}
}4.用户通过http协议请求,能自动跳转至https协议
server {
listen 80;
server_name url.ops.net;
rewrite ^(.*)$ https://$server_name$1 redirect;
#return 302 https://$server_name$request_uri;
}
server {
listen 443;
server_name url.ops.net;
ssl on;
}5.网站在维护过程中,希望用户访问所有网站重定向至一个维护页面
rewrite ^(.*)$ /wh.html break;6.当服务器遇到 403 404 502 等错误时,自动转到临时维护的静态页
error_page 404 403 502 = @tempdown;
location @tempdown {
rewrite ^(.*)$ /wh.html break;
}7.司网站在停机维护时,指定的IP能够正常访问,其他的IP跳转到维护页。
set $ip 0;
if ($remote_addr ~* "10.0.0.101|10.0.0.102") {
set $ip 1;
}
if ($ip = 0) {
rewrite ^(.*)$ /wh.html break;
}8.公司网站后台/admin,只允许公司的出口公网IP可以访问,其他的IP访问全部返回500,或直接跳转至首页
location /admin {
set $ip 0;
if ( $remote_addr ~* "61.149.186.152|139.226.172.254" ) {
set $ip 1;
}
if ($ip = 0){
return 500;
#rewrite /(.*)$ https://url.ops.net redirect;
}
}9.匹配域名,然后将第一个字段赋值给domain
if ( $host ~* (.*)\.(.*)\.(.*) ) {
set $domain $1;
}
rewrite ^/(.*) http://demo:27610/$domain$request_uri redirect;
}
结果:http://demo:27610/url/bbb10.现有两台服务器,想要实现http://console.ops.net/index.php?r=sur/index/sid/613192/lang/zh-Hans若访问资源为/index.php?r=survey...则跳转到http://sur.ops.net/index.php?
location / {
if ($args ~ r=survey) {
rewrite ^/(.*) http://sur.ops.net$request_uri? redirect;
}
11.用户请求http://url.ops.net/?id=2,替换为 http://url.ops.net/id/2.html
location / {
if ($args ~* "id") {
set $OK 1;
}
if ($args ~* (.*)\=(.*) ) {
set $id $1;
set $number $2;
}
if ( $OK = "1" ) {
# ?这个尾缀,重定向的目标地址结尾处如果加了?号,则不会再转发传递过来原地址问号内容
rewrite ^(.*)$ http://${server_name}/${id}/${number}.html? last;
}
}
12.禁止搜索引擎爬取站点
if ($http_user_agent ~* "YisouSpider|YoudaoBot|tt") {
return 403;
}13.禁止站点资源被盗用
location ~ .*\.(jpg|jpeg|gif|png)$ {
valid_referers none blocked *.ops.com;
来源域名如何合法,invalid_referer这个变量被设置为0,否则为1
if ($invalid_referer) {
rewrite ^(.*)$ /error.gif break;
}
}11—5
把证书安装和nginx平滑升级做个笔记