Write the Code. Change the World.

5月 31

不走 nginx 的代理,请求连接 websocket,总需要带上端口号。比如 new WebSocket("wss://www.xxx.com:9958"),通过 nginx 的代理就可以实现这样的请求,比如 new WebSocket("wss://www.xxx.com/wss")

一波操作

vim www.xxx.com.conf

upstream websocket {
    # wss 配置代理到 127.0.0.1:9958
    server 127.0.0.1:9958;
}

server
{
    listen 80;
    server_name xxx.com www.xxx.com;

    return 301 https://www.xxx.com$request_uri;
}

server
{
    listen 443 ssl http2;
    server_name xxx.com www.xxx.com;

    if ($host = 'xxx.com' ){
        return 301 https://www.xxx.com$request_uri;
    }

    ssl_certificate         /service/nginx/conf/ssl/www.xxx.com.pem;
    ssl_certificate_key     /service/nginx/conf/ssl/www.xxx.com.key;

    location /wss {
        # 代理到上边的自定义的地址
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    …

重启, nginx。

其实,在 proxy_pass 这里,可以直接设置为 127.0.0.1:9958

还有请求的时候,域名后一定要带上 wss 。

5月 31

Client does not support authentication protocol requested by server; conside 新旧版本密码算法不同引起的错误,只需要设置下密码方式为 mysql_native_password 就可。还是 navicat 做的好,新旧密码都支持。

操作一波

mysql -u root -p

xxxx

use mysql;

show tables;

# 查看已经有的用户
select user, host from user;

# 重新设置下密码,并使之生效
# 之前是 'xxx'@'%' IDENTIFIED BY 'xxxxxx'
'xxx'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'

flush privileges;
5月 30

使用 redis 客户端是比较有必要的,这个时候就需要远程登录 redis 了。不过,redis 默认是无密码,只允许服务端登录。修改下配置,重启 redis 即可实现想要的目的。

一波操作

修改 redis.conf 文件。

  1. 设置密码。因为密码是在配置文件里的 ,所以尽可能的设置长一点,也不怕忘记哈。

修改 # requirepass foobared 为你自己想要的密码 requirepass Safb0xafNabaf!fEfaWfs@#$a4afsdfw8ay

  1. 设置 protected-modeno

  2. 去掉 bind 或 设置为 bind 0.0.0.0

  3. 重启 redis 。

# 使用 conf 启动 redis
./redis-server redis.conf

# 登录客户端
./redis-cli 

auth 密码

# 查看所有配置
config get *

# 查看单独一个的
config get bind

其他

如果发现重启没啥鬼用,可以直接杀死进程,然后以 conf 启动。

ps -ef | grep redis

kill -9 xxxx

./redis-server redis.conf

还有 dump 文件需要注意,默认是 dump.rdb 文件。

5月 12

当你的的 nginx 中设置 Content-Security-Policy,就有可能会遇到: script in the following Content Security Policy directive: "script-src * 'unsafe-inline'"

Content-Security-Policy 策略

最快的解决办法,注释掉 Content-Security-Policy,并重启 nginx

vim xxx.conf

../../sbin/nginx -s reload

参考这里

https://www.cnblogs.com/Hwangzhiyoung/p/9146740.html

5月 07

很多情况下,我们都想将 react 编译的项目部署到非跟目录。可默认就必须是根目录,怎么实现呢。

操作一波

找到 package.json 文件,仅仅在package.json 文件中加入一行 "homepage":".", 即可。 如下。

{
  …
  "private": true,
  "homepage":".",
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
     "axios": "^0.19.2",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
  …
}

网上还有一种方法,将配置文件暴露出来。执行 npm run eject ,然后修改配置。但感觉这方法比较麻烦,也没弄通过。

如果仅仅是想部署到非跟目录,第一种方法最省事了。

更有意义

https://www.jb51.net/article/158194.htm

https://segmentfault.com/a/1190000018593030

https://blog.csdn.net/zhaolandelong/article/details/78468842

https://www.cnblogs.com/lishanlei/p/9550622.html

5月 06

在 win 中,在终端中使用 git 都会显示分支名,这样很清晰,也很安全。知道当前处于哪个分支。而 linux 下,默认是不显示这些的。这个就得想办法去实现。办法有好几种,这里就来一个简单好用的。

操作来一波

# 如果权限不够 sudo 提升权限

sudo vim ~/.bashrc

# 在末尾追求以下内容
# Show git branch name
force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt

# source 使生效
source ~/.bashrc

到这里,已经看到效果了。