lnmp - Mysql同步数据、跨域解决办法、Sftp传输文件

概述

整理一下最近开发中遇到的小问题,解决了Mysql同步数据、跨域解决办法、Sftp传输文件在这里做一个节点,进行整理和总结。

Mysql 上传大sql文件策略

再实际的开发过程中会遇到迁移数据库,,数据库文件过大而导致的上传失败,这里提供了2个解决办法:

1.phpmyadmin方式

phpMyadmin 默认上传文件50M,如果超出了大小限制Nginx会抛出413 Request Entity Too Large错误,phpMyadmin修改2个地方的配置可以解决,修改post_max_size和upload_max_filesize参数。

ini 复制代码
php -i | grep php.ini

post_max_size = 50M
upload_max_filesize = 50M

nginx 也需要配置,查看Nginx配置文件路径ps aux | grep nginx,可以在server里也可以在http里,server的优先级比http高。

ini 复制代码
http
{
    ...
    client_max_body_size 50m;
}

2.Mysql方式

如果使用的是Mysql的软件,比如nvaicat,就需要修改mysql的配置文件中的max_allowed_packet的值,比你运行的sql文件大点,即可。

ini 复制代码
whereis my.conf
my: /etc/my.cnf

max_allowed_packet = 16M

跨域解决办法

同源策略是指浏览器的一种安全机制,用于限制来自不同源(即域、协议或端口)的文档或脚本之间的交互操作,同源策略也有助于防止跨站点脚本攻击(XSS)和跨站请求伪造攻击(CSRF)等网络安全问题。

所以说,解决办法的核心是设置允许跨域。

has been blocked by CORS policy: Request header field withcredentials is not allowed by Access-Control-Allow-Headers in preflight response.

跨域的解决办法有3种,分别从前端(vite)、服务端(PHP)、Nginx,原理是在服务端做一层反向代理,让Http请求避免直连请求。

前端vite设置反向代理,官网vitejs.dev/config/

vue 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server:{
    host:"localhost",
    port:8080,
    open: true,
    proxy: {
      // 代理服务器,遇/admin将target拼接到url上
      '/admin': {
        target: "http://www.baidu.com",
        changeOrigin: true,
        // rewrite: (p) => p.replace(/^\/api/, '')
      },
    }
  },
})

PHP服务端也可以加Header头解决

php 复制代码
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");

Nginx 允许跨域配置:

ini 复制代码
location / {  
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}

远程服务器Sftp

在PHPstrom、或者是WebStrom中可以设置SFtp服务对服务器文件进行上传和下载,使用起来非常方便,设置路径Preferences->Build->Deployment中添加服务。

步骤如下图:

有时候会发生没有权限操作,比如说我的文件的用户组和用户不是当前用户自己,当前用户是没有权限操作的,使用chown -R stark:stark [文件夹],就成功操作了。

Nginx 高性能配置PHP

Nginx有很多种配置PHP的方式,下面介绍unix方式和php-fpm方式,使用unix通信方式性能更优,原因是使用tcp层进行通信,减少了网络的往返开销,以此来提升性能。

ini 复制代码
location ~ [^/]\.php(/|$)
{
    try_files $uri =404;
    fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
}

php-fpm方式:

ini 复制代码
location ~ \.php(.*)$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO  $fastcgi_path_info;
    fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
    include        fastcgi_params;
}

Nginx 隐藏index.php

bash 复制代码
location / {
    if (!-e $request_filename){
        rewrite  ^(.*)$  /index.php?s=$1  last;   break;
    }
}
相关推荐
高频因子挖掘机6 分钟前
量化回测应该保存不复权数据吗?从数据口径到收益计算的工程实践
后端·github·api
高频因子挖掘机1 小时前
实时行情为什么不应该逐只股票请求?批量查询与标的池管理实践
后端·github·api
程序猿DD6 小时前
OctaFuse Gateway 2.15.0:MCP 聚合、向量 Embeddings 与官方目录同步
后端·agent
余槐i9 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8269 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
凤山老林10 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
北京中科新远科技11 小时前
高速光模块上线验收实战:DOM、FEC、BER与端口计数器怎么一起看
服务器·网络·php
伯恩bourne11 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF11 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用