关于rewrite的妙用
Rewrite模块现在 Nginx 已经成为很多公司作为前端反向代理服务器的首选,在实际工作中往往会 遇到很多跳转(重写 URL)的需求。比如更换域名后需要保持旧的域名能跳转到新的域名 上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。如果在后端使用的 Apache 服务器,虽然也能做跳转,规则库也很强大,但是用 Nginx 跳转效率会更高 Rewrite功能rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。 rewrite 只能在server {}location {}if {}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用 例如:京东登录账号,就是一个跳转 只针对“?前域名后”重写 Rewrite跳转场景 可以调整用户浏览的 URL,看起来更规范,合乎开发及产品人员的需求 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态 URL...
整理使用nginx时碰到的问题
NET::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)解决办法:在nginx中的对应的反向代理配置如下内容,即可解决: 1234proxy_buffer_size 1024k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers 16 1024k; #proxy_buffers缓冲区,网页平均在32k以下的设置proxy_busy_buffers_size 2048k; #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 2048k;...
proxy_pass路径的唯一拼接规则
proxy_pass 只是HOST,不可以包含任何路径 如果proxy_pass后面没有任何URL路径信息(比如/,/xxx等),则反向代理的地址会包含location中的匹配部分,否则只会拼接匹配后的剩余路径 PS: 上面是最重要且唯一的一条规则,请记住 多种情况验证假设请求:http://localhost/online/wxapi/test/loginSwitch 第一种情况12345proxy_pass`结尾有`/location /online/wxapi/ { proxy_pass http://localhost:8080/; proxy_set_header X-Real-IP $remote_addr;} 代理后的实际地址:http://localhost:8080/test/loginSwitch 第二种情况12345proxy_pass`结尾没有`/location /online/wxapi/ { proxy_pass http://localhost:8080; ...
nginx配置中alias和root区别
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。 alias是一个目录别名的定义(仅能用于location上下文),root则是最上层目录的定义。 直接通过例子来理解: root123location ^~ /123/abc/ { root /data/www;} 当请求http://blog.whsir.com/123/abc/logo.png时,将会返回服务器上的/data/www/123/abc/logo.png文件,即/data/www/123/abc/ alias123location ^~ /123/abc/ { alias /data/www;} 当请求http://blog.whsir.com/123/abc/logo.png时,将会返回服务器上的/data/www/logo.png文件,即/data/www
Shell脚本中$0、$?、$!、$、$*、$#、$@
Shell脚本中$0、$?、$!、$$、$*、$#、$@1. $$Shell本身的PID(ProcessID) 2. $!Shell最后运行的后台Process的PID 3. $?最后运行的命令的结束代码(返回值) 4. $-使用Set命令设定的Flag一览 5. $*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 6. $@所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 7. $#添加到Shell的参数个数 8. $0Shell本身的文件名 9.$1~$n添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
linux下设置当前用户的环境变量
linux下设置当前用户的环境变量 1、首先 cd ~2、执行 ls -al3、执行步骤2后会看到一个文件.bash_profile4、vim .bash_profile 这种方式使用配置如java或者maven等指定好的sh,如果需要配置多个export,看下面的仿照bashrc1在.bash_profile文件中的Path中追加你要配置的路径,如下图 12多个目录通过:(冒号)分割开修改完后通过:wq命令保存 另一种方式仿照bashrc123vim ~/.sopei_env# 然后添加export xxx=xxxexport NODE_ENV=production 使变量生效 通过命令 source ~/.bash_profile 使得刚才的修改生效
linux问题总结
切换用户触发错误-bash: /dev/null: Permission denied此时,你需要删除 /dev/null 文件,并重新创建它: 1rm -f /dev/null; mknod -m 666 /dev/null c 1 3 ./ 运行bash脚本文件出现 报错信息 /usr/bin/env: “bash\r“: 没有那个文件或目录错误原因:这主要是因为bash后面多了\r这个字符的原因。在linux终端下,输出\r会什么都不显示,只是把光标移到行首。于是终端虽然输出了/usr/bin/env bash,但是碰到\r后,光标会被移到行首,接着输出了:No such file or directory把前面的覆盖掉了。于是出现了那个莫名其妙的出错信息了 解决办法: 1234用vim打开sh脚本文件, 重新设置文件的格式:set ff 然后回车 再重新设置下文件格式:set ff=unix 回车:wq!...
利用软连接或挂载处理文件异处存储
背景 /var/opt/gitlab所在磁盘资源不足,现在希望将其无感迁移到**/data/opt/gitlab** 软链接方案停止 GitLab 服务1sudo gitlab-ctl stop 迁移数据到新盘目录12sudo mkdir -p /data/opt/gitlabsudo rsync -av --progress /var/opt/gitlab/ /data/opt/gitlab/ rsync 会保留文件权限和软链接,比 cp 安全。 rasync执行完后,使用diff指令确认下是否一致,如果不一致,则使用rsync继续进行迁移,直至无差异 备份原目录(以防回滚)1sudo mv /var/opt/gitlab /var/opt/gitlab.bak 建立软链接1sudo ln -s /data/opt/gitlab /var/opt/gitlab 权限检查1sudo chown -R git:git /data/opt/gitlab GitLab 默认用户是...
scp,ssh用法
上传到远端 上传目录: scp -r ./util/ 用户名@192.168.1.65:/home/wwwroot/limesurvey_back/util/ 上传文件 scp ./util.js 用户名@192.168.1.65:/home/wwwroot/limesurvey_back/scp/ 远端下载scp [-r] 用户名@192.168.1.65:/share/webCompileOut.sql ./ 如果是目录拷贝要加“-r”参数,用户名可选,如果省略用户名,默认为终端的用户名。 免密 先执行su 用户名切换到想要免密的账户 在你的主控方机器上使用 ssh-keygen命令创建公钥,使用ssh-keygen -t rsa来创建,程序会问你存放目录,如果不需要修改(建议不修改, 会放在~/路径下),直接回车几次即可 将主控方~/.ssh目录下id_rsa.pub文件拷贝到受控机器的~/.ssh目录中,然后操作受控方将文件内容导入到~/.ssh/authorized_keys文件 1234主控方:scp...
