IIS如何设置反向代理

说到反向代理,很多人会想到nginx,其实iis也是可以实现方向代理的。 1.安装ARR、URL Rewrite(URL重写工具2.0) 注意英文和中文环境的对应: Application Request Routing 对应中文 应用程序请求路由 URL Rewrite Module 对应中文 URL重写 下载安装ARR(也可以在IIS管理器中,Web平台安装程序->产品->搜索框中搜索"arr"->应用程序请求路由3.0 Beta->添加->安装): http://www.iis.net/downloads/microsoft/application-request-routing 下载安装URL Rewrite Module(也可以在IIS管理器中,Web平台安装程序->产品->搜索框中搜索"url"->url重写工具2.0->添加->安装): http://www.microsoft.com/en-us/download/details.aspx?id=7435 这里推荐使用IIS自带的Web安装包工具,微软还是很强大的。 2.启用ARR:双击ARR(Application Request Routing)->点击右侧Server Proxy Settings…->选中Enabel proxy->点击右侧“应用”; 3.启用URL重写,可以通过web.config配置,也可以通过界面设置(web.config最终也可以使用界面来查看和操作),比如web.config样例: 此时 www.baidu.com/api 或者 www.baidu.com/api/xxxx 都被代理到 www.proxy.com 或者 www.proxy.com/xxx,如果不想过滤掉"baidu",只需要把match url 改成 “^(baidu(/?|.*))$” <?xml version=”1.0” encoding=”UTF-8”?> <configuration> <system.webServer> <rewrite> <rules> <rule name=”bdProxy” stopProcessing=”true”> <match url=”^baidu(/?|.*)$” /> <conditions> <add input=”{HTTP_HOST}” pattern=”www.baidu.com” /> </conditions> <action type=”Rewrite” url=”http://www.baidu.com{R:1}“ /> <serverVariables> <set name=”HTTP_X_FORWARDED_HOST” value=”{HTTP_HOST}” /> </serverVariables> </rule> </rules> </rewrite> </system.webServer> </configuration> 这里要特别注意了:由于使用了变量 HTTP_X_FORWARDED_HOST,所以需要在 url重写->查看服务器变量->添加->添加HTTP_X_FORWARDED_HOST

July 10, 2019

Angular项目部署和跨域问题

采用Angular开发,部署的时候有两种方式:第一种是把打包后的文件直接发布到站点根目录下面,这种情况Angular的项目将作为一个独立的网站,那么必然会面对跨域的问题;第二种是把Angular打包后的文件放到站点根目录下的某个文件夹,这种情况不需要跨域,但是需要对路径做相关的配置。这里先讨论第一种情况。 一、开发环境 可以通过代理跨域,在angular项目中 1)在项目根目录新建proxy.config.json; 2)跟上面的proxyTable 一样配置好; 3)执行命令ng serve –proxy-config proxy.config.json即可 4)可以在package.json里配置下 “scripts”: { “start”: “ng serve –proxy-config proxy.config.json” }, 然后执行npm run start 二、生产环境 上面的方式可以解决我们在Angualr项目中开发环境的跨域问题,但是无法解决生产环境上的跨域问题,有的时候生产环境上也需要处理跨域问题,这个时候proxyTable是不行的,需要通过Nginx或者IIS反向代理(你没有看错,IIS反向代理,而且效率也很高,下一篇我会讨论)。 反向代理作用 1) http服务器,可以独立提供http服务; 2) 虚拟主机:多个域名指向同一个服务器,服务器根据不同的域名把请求转发到不同的应用服务器; 3) 反向代理:负载均衡,将请求转发至不同的服务器 nginx的相关配置 location / { root D:\cross-demo\dist #直接指向打包后的文件 index index.html index.htm; } location /api/ { proxy_pass http://localhost:8888/; # 将地址代理到api上 }

July 1, 2019

关于简·奥斯汀和英文名著

我读的第一本英文名著是简·奥斯汀的《理智与情感》,虽然我阅读过了7.5,但是刚开始前几章还是有些吃力,但是慢慢的越读越顺,一发不可收拾,然后一口气读完了《傲慢与偏见》、《艾玛》、《曼斯菲尔德庄园》、《劝导》和《诺桑觉寺》。对于她所有的作品,我也不免俗地最喜欢《傲慢与偏见》和《理智与情感》,这两部作品体现出作者年轻的心境,激烈、热烈和沉浸,而《艾玛》和《劝导》则是像小溪一样涓涓地流,静谧、热忱和稳健。期间了解到奥斯汀的个人经历以及她作品的影响力,她确实是可以和莎士比亚齐名的英国作家。 简·奥斯汀略传 一、出生 奥斯汀于1775年12月16日在史蒂文顿堂区出生,于次年4月5日公开洗礼。她在家里待了几个月后,被母亲送到住在附近的乳母伊丽莎白·利透伍德(Elizabeth Littlewood)家抚养,为期一年或18个月[19]。1783年,简和卡珊德拉按照家庭传统被送到牛津,在安·考利太太(Mrs. Ann Cawley)处接受教育,同年晚些时候跟着老师去了南安普顿。两个女孩都得了斑疹伤寒,简差点丧命。奥斯汀随后在家学习,直到于1785年和姐姐一起去寄宿学校。学校课程可能包含了法语、拼写、针线活、舞蹈和音乐,可能还有戏剧。至1786年12月,简和卡珊德拉已回到家,因为奥斯汀家无法承担同时送两个女儿上学。 奥斯汀接下来的教育是通过阅读书籍完成的,父亲及哥哥詹姆斯和亨利给予了指导。奥斯汀显然可以无限制地使用父亲和家庭友人沃伦·黑斯廷斯的图书室,两者加在一起有数量可观、内容各异的藏书。父亲也容许她有时尝试写涉及性爱的内容,并给姐妹俩的写作、绘画活动提供了价格不菲的纸张和其他材料。据传记作者帕克·赫南(Park Honan)所述,奥斯汀家的生活在“一个开放、愉快、无拘束的知识分子家庭氛围”中进行,与她家立场相反的政治或社会观点也在家中被提及和讨论[24]。奥斯汀在1786年从学校返家后,余生一直住在自己小家庭的生活范围内。 奥斯汀受到教育还有私下的戏剧演出。在她7岁到13岁期间,她的家人和好友筹划上演了一系列舞台剧,包括理查·谢立丹的《情敌》(The Rivals)和大卫·加里克(David Garrick)的《上流社会》(Bon Ton)。虽然具体细节无从所知,奥斯汀很有可能参与了这些活动,一开始作为观众,长大些后成为参与者。这些戏剧大部分为喜剧,奥斯汀在喜剧和讽刺方面的天赋可能来源于此。 二、少年 英王亨利四世的画像,是奥斯汀姐姐卡珊德拉为《英格兰历史》所作插画(约1790年)。作者奥斯汀自称为“一位偏袒的、有成见的、无知的历史学家”。 可能早至1787年奥斯汀就开始创作诗歌、故事和剧本,作为她自己和家人的娱乐消遣[28]。她日后取了这些早期作品中的29篇汇编成了三本笔记本,它们如今被称为《少年作品》(Juvenilia),包括了1787年到1793年间的创作。手稿中有证据表示奥斯汀直到1809年至1811年间还在继续修改这些作品,她的侄子侄女表示最晚修改时间可至1814年。其中有一篇书信体讽刺小说题名为《爱与友情》(原文为Love and Freindship),嘲讽了流行的感伤小说(sentimental novel)[31]。还有一篇《英格兰历史》(The History of England)的手稿长34页,姐姐卡珊德拉为其添加了13幅水彩插画。 奥斯汀的《英格兰历史》戏仿了流行历史读物,尤其是奥立佛·高德史密斯的《英格兰史》(History of England,1764)。学者理查德·延金斯认为她的《少年读物》时常“喧嚣狂暴”、“无拘无束”;他将其与18世纪小说家劳伦斯·斯特恩和20世纪喜剧团体蒙提·派森的作品相比较。 三、成年 奥斯汀成年后继续住在父母家中,从事合乎她性别年龄和社会地位的活动:练习弹钢琴(fortepiano),辅助母亲和姐姐管理仆人,照顾家里分娩期的女性和临终的老人[34]。她把写好的短篇寄给刚出生的侄女范妮·凯瑟琳和简·安妮·伊丽莎白。她尤其为自己的裁缝手艺自豪。她也定期去教堂,频繁地和朋友与邻居来往 ,还在晚间给家人朗读小说(经常是她自己的作品)。邻里间的社交活动通常是跳舞,有时是晚饭后在某人家里即兴而起,有时是在市政厅的聚会厅(assembly rooms)举办的舞会[38]。她的哥哥亨利日后说:“简喜欢跳舞,并且很擅长。” 1793年,奥斯汀开始写一个短剧,随后弃稿。该剧本是一部“六幕喜剧”,后来被题名为《查尔斯·格兰德森爵士;又,那个高兴的人》(Sir Charles Grandison; or, The Happy Man)。她后来重拾该剧,在1800年左右完成。奥斯汀的课本中收录了她最爱的当代小说《查尔斯·格兰德森爵士的历史》(The History of Sir Charles Grandison,塞缪尔·理查森著,1753年)的节选,该短剧是对这部小说的戏仿[40]。 传记作者赫南猜测,奥斯汀在1789年写成《爱与友情》后不久,决定“为利润写作,把写故事作为她的主要追求”,也就是成为一名职业作家。大约从1793年起,她开始写更长,更复杂的作品。 1793年到1795年间,奥斯汀写了《苏珊夫人》,常被认为是她最精妙、最具雄心的早期作品。传记作者克莱尔·托马林(Claire Tomalin)认为书中女主人公是一个性方面的捕猎者,用她的才智和魅力操纵、背叛和伤害她的情人、朋友与家人,这一点和奥斯汀的其他作品不同。 四、作品 在查顿时,奥斯汀出版了四本小说,大体上反响都不错。通过哥哥亨利的关系,出版商托马斯·埃杰顿(Thomas Egerton)同意出版《理智与情感》[A]。小说于1811年10月出版,收获了好评,流行于舆论界人士间,首版在1813年中旬售罄[B]。小说的利润使奥斯汀取得了一定程度上的经济和心理独立。随后,埃杰顿在1813年1月出版了《傲慢与偏见》,是《第一印象》修改后的成果。他为这本书做了宣传,它立即大获成功,收到了三篇好评,销量也很好。到同年10月,埃杰顿开始了第二版的销售。1814年5月,《曼斯菲尔德庄园》出版。虽然它被评论界忽视,但受到大众欢迎,在六个月内全部卖出,给奥斯汀带来的收入比其他作品都高。 奥斯汀得知摄政王(即后来的乔治四世)欣赏她的作品,每个住地都有一套她的书。1815年11月,摄政王的图书管理员詹姆斯·斯坦尼尔·克拉克(James Stanier Clarke)邀请奥斯汀拜访位于伦敦的王室居所,并暗示她向摄政王献上即将出版的小说《爱玛》。尽管奥斯汀不喜欢摄政王,她无法拒绝这个请求。日后,她写了讽刺文《根据各方意见写就的小说计划》(Plan of a Novel, according to Hints from Various Quarters),是听取图书管理员为她将来作品提供的许多建议后作出的“完美小说”大纲。 1815年中旬,奥斯汀的出版商换成了更有名的约翰·默里。他于1815年12月出版了《爱玛》,于1816年2月出版了《曼斯菲尔德庄园》的第二版。虽然前者卖的不错,但后者销量惨淡,抵消了《爱玛》的大部分利润。这两本书是在她生前出版的最后两部小说。 在默里准备出版《爱玛》时,奥斯汀开始创作一部新小说《艾略特一家》(后来出版为《劝导》),在1816年7月完成初稿。在《爱玛》出版后不久,哥哥亨利从考斯比处买回了《苏珊》的版权。亨利的银行在同年3月破产,使他丧失了财产,深陷债务中,让兄弟爱德华、詹姆斯和弗兰克花去了大笔金钱。亨利和弗兰克无力再供养他们的母亲和姐妹了。因家庭财务危机,奥斯汀被迫推迟这两本已完成小说的出版。

June 25, 2019

[转]使用Censys 查询CDN/如Cloudflare后面的真实服务器IP地址与对应防范

Censys是一个可恨又可爱的搜索联网设备信息的新型搜索引擎, 利用他可以搜索到很多有用的信息, 比如通过ssl证书查找到CDN后面背后的真实IP. 防范: 1, 建议屏蔽所有Censys段 https://censys.io/ipv4?q=censys.io 搜索censys的ip段并屏蔽. 如下面两个段 198.108.0.0/16 141.212.0.0/16 2, 或者屏蔽除了CDN以外所有IP访问. (推荐, 但请注意操作, 别把自己给屏蔽了) CentOS 7 firewall防火墙屏蔽除指定IP外的所有IP https://www.openos.org/post/340/ 3, 如果是cloudflare用户, 也可以使用argo-tunnel https://www.cloudflare.com/zh-cn/products/argo-tunnel/ https://developers.cloudflare.com/argo-tunnel/quickstart/ 其他查询Cloudflare源IP的相关工具 http://www.crimeflare.org:82/ https://securitytrails.com cloudflare 服务器IP地址 https://www.cloudflare.com/ips/ IPv4 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/12 172.64.0.0/13 131.0.72.0/22 IPv6 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32

June 14, 2019

mysql数据库报错:找不到mysql.sock导致无法连接

mysql.sock默认的是在/var/lib/mysql, 如果发现确实是在该目录下,可以在[mysqld]下面加入mysql.sock的path vi /etc/my.cnf(my.cnf也可能在其他路径下) [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock 但是要保证使用mysql的用户具有对该目录的写权限,否则这样的改动由于权限限制仍然会报错。 所以为了避免权限问题也可以使用软链接为/var/lib/mysql/mysql.sock创建一个到/tmp/mysql.sock的联接 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 由于/tmp/文件夹默认对other有w权限,这样就可以避免权限问题。 此外,如果发现mysql.sock不在默认的/var/lib/mysql位置,一种解决方法是使用find命令搜索mysql.sock的位置,然后按前面两种解决方案挑一种做即可。 或者进行初始化:/usr/local/mysql/bin/mysql_install_db –user=mysql

June 13, 2019

php-fpm找不到php-cgi.sock

这两天整理centos服务器,为了节省空间清理了不少文件,没想到不小心把/tmp/下的目录清除了,导致程序报错:php-fpm找不到php-cgi.sock。 php-fpm有两种listen方式,一种是通过端口来操作,一种是sock文件。 在nginx的server配置当中,如果设置为fastcgi_pass unix:/tmp/php-cgi.sock的话,有可能会出现502错误,这是以为nginx此项没有找到php-cgi.sock文件或者权限问题导致的,我们也可以改成fastcgi_pass:127.0.0.1:9000来修正这个错误 。 当我们用php-fpm来管理我们的php启动时,按照如下的配置,就会自动生成/tmp/php-cgi.sock文件,然后再访问的话就不回出现502 Gateway错误了。配置如下: [global] pid = /var/run/php-fpm.pid error_log = /var/log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi.sock user = www group = www pm = dynamic pm.max_children = 20 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 注:将php.ini里的cgi.fix_pathinfo设置为0,不然会有漏洞。

June 12, 2019

東方之珠

東方之珠 羅大佑 詞曲 《皇后大道東》 小河彎彎向南流 流到香江去看一看 東方之珠我的愛人 你的風采是否浪漫依然 月兒彎彎的海港 夜色深深 燈火閃亮 東方之珠 整夜未眠 守著滄海桑田變幻的諾言 讓海風吹拂了五千年 每一滴淚珠彷彿都說出你的尊嚴 讓海潮伴我來保佑你 請別忘記我永遠不變黃色的臉 船兒彎彎入海港 回頭望望 滄海茫茫 東方之珠 擁抱著我 讓我溫暖你那蒼涼的胸膛 For HK~

June 12, 2019

选择Angular而不是Vue

最近团队要选择前端开发框架,我进行了大量对比,最终选择了Angular,我承认Vue也很优秀,React也超级棒,但Angular非常适合我们。我们需要的就是这样一个真正的框架,包含了组件化方案、模块化方案、测试方案、表单验证、路由、国际化方案和安全方案。 Angular 的工程师将我们需要的所有功能做了不错的整合。如果使用 Vue,我可能还要面临更多选择。Angular 的一份文档涵盖了开发中的方方面面。如果使用 Vue,可能每个功能要去看不同的文档。Angular 更强势更主观,它的文档对于如何完成某个功能给出了明确的建议。我们团队的成员有不同的编程背景,虽然有三个全职的前端,但是还有十几个 Java 和 Python 程序员,他们也可能会参与前端工作,Angular 的文档能让这些成员快速适应环境。 Angular = Vue + vue-router + axios + karma + 表单验证插件 + i18n … 我们需要typescript来告别原来脓肿不堪的js代码 使用TypeScript,告别对臃肿代码的重构,让自己的编程真正能够面向对象吧。 一千个人有一千种React代码风格,但是Angular的代码风格只有一种。你会发现Angular的每一处都是最佳实践,设计模式的运用是基于Google多年的Java编程经验的,响应式的应用也是基于微软对于操作系统中异步处理的经验总结。 无数的编程概念都有其历史厚重感,而Angular将他们汇聚到了一起。windows中的linq‘时间上的数组’,spring中的依赖注入,处理HDFS的MR,到linux线程本地存储,再到前端界的MVVM,MVC。 Angular优势: Angular 的工程师将我们需要的所有功能做了不错的整合。如果使用 Vue,我可能还要面临更多选择。 Angular 的一份文档涵盖了开发中的方方面面。如果使用 Vue,可能每个功能要去看不同的文档。 Angular 更强势更主观,它的文档对于如何完成某个功能给出了明确的建议。我们团队的成员有不同的编程背景,虽然有三个全职的前端,但是还有十几个 Java 和 Python 程序员,他们也可能会参与前端工作,Angular 的文档能让这些成员快速适应环境。 核心原因:Angular 是一个完整的框架。

June 10, 2019

关于G#F#W和信息自由

每年这段时间都很敏感,今天最突出。过去几年,我的梯子都没有倒过,毕竟自己也就是用来进行技术探索,上上几个top5的网站,从来不在外面乱说话乱起哄,也有自己独立的判断能力,不轻易相信恶意抹黑的花边新闻。但是今年梯子倒了,估计是全面推倒了这次。昨天折腾了一上午终于弄好了,魔高一尺道高一丈,这次启用https加cdn,并且屏蔽一切IP请求主机,应该能撑一段时间。 我理解有些码农们投身G#F#W建设的身不由己,但如果真把这当成伟大事业那就有些悲哀了。要知道,互联网发明最初的目的就是信息分享和信息自由,而我也一直坚信,自由开放下的环境没事的地方,才是真正长治久安。如果有机会,我一定写一部关于码农们和G#F#W之间的你来我往和爱恨纠葛的剧本。

June 6, 2019

CentOS编译安装shadowsocks-libev

部署环境:CentOS 7.4 x64 shadowsocks-libev项目地址 编译安装 yum update -y yum install -y epel-release rng-tools yum install -y git wget gettext gcc autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel zlib-devel openssl-devel rngd -r /dev/urandom 安装Libsodium export LIBSODIUM_VER=1.0.16 wget https://download.libsodium.org/libsodium/releases/libsodium-$LIBSODIUM_VER.tar.gz tar xvf libsodium-$LIBSODIUM_VER.tar.gz pushd libsodium-$LIBSODIUM_VER ./configure --prefix=/usr && make make install popd ldconfig 安装MbedTLS export MBEDTLS_VER=2.7.0 wget https://tls.mbed.org/download/mbedtls-$MBEDTLS_VER-gpl.tgz tar xvf mbedtls-$MBEDTLS_VER-gpl.tgz pushd mbedtls-$MBEDTLS_VER make SHARED=1 CFLAGS=-fPIC make DESTDIR=/usr install popd ldconfig 安装shadowsocks git clone https://github.com/shadowsocks/shadowsocks-libev.git cd shadowsocks-libev git submodule update --init --recursive ./autogen.sh && ./configure && make make install cd .. 修改配置 mkdir /etc/shadowsocks-libev vi /etc/shadowsocks-libev/config.json 写入以下内容并保存 ...

June 4, 2019