邓麟的个人网站

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

IIS反向代理解决前端跨域问题

发表于 2019-05-17

前后端分离已经是主流的开发模式,后端提供WebApi服务,前端实现路由和页面逻辑和管理。通常前端采用Nodejs和React等工具技术栈。比如使用VSCode开发时,输入npm start或者npm start:no-mock,可以通过访问配置的代理地址,获取后端的WebApi服务。

然而当从开发环境中打包生成静态文件(npm build),发布到ngix或者iis等托管web服务器上时,会发现前端的代理设置无法直接访问到后端WebApi服务上。因此,需要在web服务器上配置反向代理,才能解决前端请求后端WebApi服务的问题。也就是反向代理解决前端跨域问题。

1 环境要求

iis需要满足iis7或者更高的版本

2 下载安装ARR

ARR全称为 Application Request Routing
http://www.iis.net/downloads/microsoft/application-request-routing

安装好后,在iis里能看到以下图

1

3 配置反向代理

点击上图ARR,启用反向代理配置
2
点击Server Proxy Settings

3
勾选Enable proxy

3.1 网站配置反向代理

在需要反向代理的Web网站上,点击该网站,能看到下图中的信息
4
双击URL重写,点击右侧的新建规则,再选择空白规则,确定

3.2 配置规则

3.2.1 配置匹配规则

5
根据反向代理的要求,可以部分或者全部进行反向代理配置。如上图所示,^api/(.*),表示只是匹配api/开头的网址进行反向代理。

如果需要全部匹配,则^/(.*)。

匹配规则下可以使用测试模式,如下图所示
6
如果输入的是api/home的网址,则匹配成功,同时请注意捕获组内的向后引用{R:0}和{R:1},在后续配置中会用到。

在测试模式中,如果匹配失败,如下图所示
7

3.2.2 配置条件规则

接下来配置条件规则,点击添加
8
输入{HTTP_HOST}, 模式内输入你网址的信息,如果是域名写域名,如果是IP写IP,根据网站的配置来定。

3.2.3 配置重写URL

之前通过配置匹配规则和条件规则,确定了在什么样的网址来源基础上来出发反向代理的条件,重写URL则是反向代理到目的网址上。通常目的网址和源网址是跨域的。
9
配置需要注意,必须以http://开头,否则的话会反向代理失败。其次,{R:0}和{R:1},该选择什么参数,由反向代理的需要来决定。
6
如果 www.source.com/api/home 需要到 www.dest.com/api/home,则需要{R:0}
如果 www.source.com/api/home 需要到 www.dest.com/home,则需要{R:1}

3.2.4 保存配置

点击应用该规则,回到IIS的网站选项上,点击重启服务即可重新使用。

CentOS常见操作指令

发表于 2019-05-10 | 分类于 Linux

1 目录操作

1.1 查找目录

1
2
3
4
5
6
7
8
9
10
11
//查看当前目录
# ls
//查看满足part的目录
# ls | grep 'part'

//回到根目录
# cd /
//返回上一级目录
# cd ..
//进入folder目录
# cd folder

1.2 操作目录

1
2
3
4
5
6
7
8
9
//创建文件夹
# mkdir folder

//移动文件
# mv /tmp/d1/test.txt /tmp/n1

//删除文件/文件夹(包含子目录)
# rm -rf folder
# rm -rf test.txt

2 操作文件

1
2
3
4
5
6
7
8
//新建文件
touch test.txt

//打开文件
cat test.txt

//编辑文件
vi test.txt

2.1 vi操作

1
2
//编辑文件
vi test.txt
模式指令 模式说明
i 插入模式
Esc 命令模式
: 底行模式
模式指令 模式说明
wq 保存并退出
q! 放弃修改退出

3 软件管理

1
2
3
4
5
6
7
8
//软件安装
yum install xxx

//软件卸载
yum remove xxx

//查看已安装的软件
yum list install

MySQL安装和步骤

发表于 2019-05-10 | 分类于 Linux

1 MySQL 安装

1.1 下载MySQL YUM包

1
# wget http://repo.mysql.com/mysql80-community-release-el7-10.noarch.rpm

1.2 安装软件源

1
# sudo rpm -Uvh mysql80-community-release-el6-n.noarch.rpm

1.3 安装MySQL

1
# sudo yum install mysql-community-server

1.4 MySQL服务管理

1
2
3
4
5
6
7
8
//启动服务
# sudo service mysqld start

//重启服务
# sudo service mysqld restart

//查看服务
# sudo service mysqld status

2 配置MySQL

2.1 生成临时密码

1
# sudo grep 'temporary password' /var/log/mysqld.log

2.2 登录MySQL

1
2
3
4
5
//登录
# mysql -uroot -p

//修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

2.3 用户管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建用户
mysql> CREATE USER username IDENTIFIED BY 'password';

//分配权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';

//管理权限
mysql> EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'%';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'%' IDENTIFIED BY 'password';

mysql> GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'%' IDENTIFIED BY 'password';

//刷新权限
mysql> FLUSH PRIVILEGES;

2.4 开启远程连接

1
2
3
4
5
mysql> USE mysql;

mysql> ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

mysql> FLUSH PRIVILEGES;

重点: 创建用户格式有‘username‘@’%’、‘username‘@’localhost’,其中%可以允许用户远程连接,localhost则不行。

3 常见指令

1
2
3
4
5
mysql> show databases;

mysql> use database;

mysql> show tables;

CentOS+VirtualBox安装

发表于 2019-05-10 | 分类于 Linux

下载镜像

官网: https://www.centos.org

安装前配置

  1. BIOS打开CPU虚拟化支持 (只有开启后,VirtualBox才能安装64位的CentOS)
  2. VirtualBox新建虚拟OS
    1. 设置-系统-主板,指点设备选择usb触控板(虚拟系统安装完成后修改回来)
    2. 设置-常规-高级,共享粘贴板/拖放选择双方
    3. 设置-系统,能勾选都勾选
    4. 设置-网络,连接方式选择桥接网卡
    5. 设置-存储,VDI,勾选固态驱动器

      安装选项

  • Minimal
  • Everything
  • KDE
  • Gnome

    切换源到阿里云

  • 备份
1
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  • 下载阿里云的CentOS-Base.repo
1
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  • 清理缓存
1
sudo yum clean all
  • 生成新缓存
1
sudo yum makecache
  • 更新
1
sudo yum -y update

安装增强包

  • 安装组件
1
yum install kernel-devel gcc
  • VirutalBox,设备-安装增强功能
1
./VBoxLinuxAdditions.run Or 双击运行

安装Git&VSCode

1
yum install git
1
2
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
1
2
yum check-update
sudo yum install code

Git的基础

发表于 2019-05-10 | 分类于 Tool

1 安装

Ubuntu :

1
sudo apt-get install git

Windows :

1
https://www.git-scm.com/downloads

2 设置

2.1 全局设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//设置列表查看
$ git config --global --list

//用户名和邮箱
$ git config --global user.name denglin
$ git config --global user.email dlgithub@outlook.com

//远程同步操作时,不会重新输入账号密码
$ git config --global credential.helper store

//忽略换行符差异
git config --global core.whitespace cr-at-eol

//别名
$ git config --global alias.st status
$ git config --global alias.lo "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
$ git config --global alias.los "log --color --graph --stat --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

或者是在Git/etc/profile.d上建立sh文件,输入别名 alias gs = ‘git status’

3 启动项目

3.1 从gitlab上获取

1
$ git clone https://www.gitlab.com/denglin/xxxx.git

3.2 从本地上传

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//git初始化 自动生成 .git .gitignore .gitattributes
$ git init

//远程关联
$ git remote add origin https://www.gitlab.com/denglin/xxx.git

//Add
$ git add .

//commit
git commit -m "Initial commit"

//push
git push -u origin master

在visual studio平台下,打开解决方案,右键选择将解决方案添加到源代码管理,选择Git,自动生成.git,.gitattributes,.gitignore。其中.gitignore文件内自动包含了vs平台不需要纳入源码管理的文件夹和文件名。所以建议不要用$ git init来生成git配置环境。

4 常见命令

Git分工作目录、暂存区、本地仓库、远程仓库

4.1 查看命令

1
2
3
4
5
6
7
8
9
10
11
//查看状态
$ git status
//查看状态(简化版)
$ git status -s

//查看日志
$ git log
//查看日志(简化版)
$ git log --pretty=oneline
//所有操作过的log日志(遇到版本回退后,还能找到回退前之后的日志)
$ git reflog

4.2 添加和提交命令

1
2
3
4
5
6
7
8
9
//工作目录添加到暂存区
$ git add .
$ git add filename
$ git rm filename //添加移除文件

//暂存区提交到本地仓库
$ git commit -m "commit infomation"
//工作目录直接提交到本地仓库
$ git commit -a -m "commit infomation"

4.3 恢复命令

1
2
3
4
5
6
7
8
9
10
11
12
//恢复暂存区的记录到工作目录
$ git checkout .
$ git chekout --filename


//直接恢复本地仓库的记录到工作目录
$ git reset HEAD
$ git reset HEAD filename


//切换到对应的commit_id 并加载到本地目录(比如版本回退)
$ git reset --hard commit_id

4.4 对比命令

1
2
3
4
5
6
7
8
9
10
11
12
//对比工作目录和暂存区
$ git diff
$ git diff filename

//对比暂存区和本地仓库
$ git diff --cached

//对比工作目录和本地仓库
$ git diff HEAD

//对比工作区与指定commit-id的差异
$ git diff commit-id [<path>...]

4.5 远程命令

1
2
3
4
5
6
7
8
//本地仓库master push到远程仓库origin
$ git push origin master

//远程仓库origin fetch到本地仓库master
$ git fetch origin master

//远程仓库origin 直接pull到本地工作目录
$ git pull origin master

4.6 git status -s 命令说明

congmand info
_M 工作目录文件修改,但没有放到暂存区
M_ 工作目录文件修改,已放到暂存区
MM 工作目录文件修改,已放到暂存区,但又再次修改
A 新增到暂存区
?? 新增未跟踪

5 分支

5.1 分支基础流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//查看分支
$ git branch

//创建分支
$ git checkout -b dev

$ git branch dev
$ git checkout dev

//切换分支
$ git checkout master

//合并分支(默认Fast Forward模式)
$ git merge dev

//合并分支(禁用Fast Forward模式,并生成一个Commit)
git merge --no-ff -m "merge with no-ff" dev

//删除分支
$ git branch -d dev

5.2 储藏工作现场(分支切换)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//储藏当前工作现场
$ git stash

//切换到其它分支
//管理
//切换回当前分支

//存储现场
$ git stash list

//恢复工作现场、删除stash内容
$ git stash pop

$ git stash apply
$ git stash drop

6 Tag

6.1 标签命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//查看标签
$ git tag

//查看标签信息
$ git show v0.9

//创建标签
$ git tag v1.0

//为历史版本创建标签
$ git tag v0.9 f52c633

//创建带有说明的标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb

//删除标签
$ git tag -d v0.1

6.2 远程仓库的标签管理

1
2
3
4
5
6
7
8
9

//推送标签
$ git push origin v1.0

//推送全部标签
$ git push origin --tags

//删除远程标签
$ git push origin :refs/tags/v0.9
Deng Lin

Deng Lin

邓麟的个人网站
5 日志
2 分类
4 标签
© 2019 Deng Lin
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Gemini v7.1.1