rickyyangrui / blog Goto Github PK
View Code? Open in Web Editor NEW个人博客,详情见issue
个人博客,详情见issue
在电脑网络中,反向代理是代理服务器的一种。它根据客户端的请求,从后端的服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端。与前向代理不同,前向代理作为一个媒介将互联网上获取的资源返回给相关联的客户端,而反向代理是在服务器端(如Web服务器)作为代理使用,而不是客户端。
Nginx文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志及PID文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#工作模式及连接数上限
events {
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,
#仅用于linux2.6以上内核,可以大大提高nginx的性能
use epoll;
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
# 并发总数是 worker_processes 和 worker_connections 的乘积
# 即 max_clients = worker_processes * worker_connections
# 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4 为什么
# 为什么上面反向代理要除以4,应该说是一个经验值
# 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
# worker_connections 值的设置跟物理内存大小有关
# 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
# 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
# $ cat /proc/sys/fs/file-max
# 输出 34336
# 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
# 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
# 使得并发总数小于操作系统可以打开的最大文件数目
# 其实质也就是根据主机的物理CPU和内存进行配置
# 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
# ulimit -SHn 65535
}
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
default_type application/octet-stream;
#设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
#以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
#开启gzip压缩
gzip on;
gzip_disable "MSIE [1-6].";
#设定请求缓冲
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
#设定虚拟主机配置
server {
#侦听80端口
listen 80;
#定义使用 www.nginx.cn访问
server_name www.nginx.cn;
#定义服务器的默认网站根目录位置
root html;
#设定本虚拟主机的访问日志
access_log logs/nginx.access.log main;
#默认请求
location / {
#定义首页索引文件的名称
index index.php index.html index.htm;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#过期30天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}
#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#禁止访问 .htxxx 文件
location ~ /.ht {
deny all;
}
}
}
该文件用来测试和展示书写README的各种markdown语法。GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为GitHub Flavored Markdown
。简称GFM
,GFM在GitHub上有广泛应用,除了README文件外,issues和wiki均支持markdown语法。
***、---、___可以显示横线效果
这是一段普通的文本
Hello,大家好,我是果冻虾仁。
在一行开头加入1个Tab或者4个空格。
在连续几行的文本开头加入1个Tab或者4个空格。
欢迎到访
很高兴见到您
祝您,早上好,中午好,下午好,晚安
使用一对各三个的反引号:
欢迎到访
我是一个Python码农
该语法也可以实现代码高亮,见代码高亮
文字高亮功能能使行内部分文字高亮,使用一对反引号。
语法:
`linux` `网络编程` `socket` `epoll`
效果:linux
网络编程
socket
epoll
也适合做一篇文章的tag
直接回车不能换行,
可以在上一行文本后面补两个空格,
这样下一行的文本就换行了。
或者就是在两行文本直接加一个空行。
也能实现换行效果,不过这个行间距有点大。
语法 | 效果 |
---|---|
*斜体1* |
斜体1 |
_斜体2_ |
斜体2 |
**粗体1** |
粗体1 |
__粗体2__ |
粗体2 |
这是一个 ~~删除线~~ |
这是一个 |
***斜粗体1*** |
斜粗体1 |
___斜粗体2___ |
斜粗体2 |
***~~斜粗体删除线1~~*** |
|
~~***斜粗体删除线2***~~ |
斜体、粗体、删除线可混合使用
基本格式:
![alt](URL title)
alt和title即对应HTML中的alt和title属性(都可省略):
URL即图片的url地址,如果引用本仓库中的图片,直接使用相对路径就可了,如果引用其他github仓库中的图片要注意格式,即:仓库地址/raw/分支名/图片路径
,如:
https://github.com/guodongxiaren/ImageCache/raw/master/Logo/foryou.gif
# | 语法 | 效果 |
---|---|---|
1 | ![baidu](http://www.baidu.com/img/bdlogo.gif "百度logo") |
|
2 | ![][foryou] |
![][foryou] |
注意例2的写法使用了URL标识符的形式,在链接一节有介绍。
在文末有foryou的定义:
[foryou]:https://github.com/guodongxiaren/ImageCache/raw/master/Logo/foryou.gif
# | 语法 | 效果 |
---|---|---|
1 | [百度](https://www.baidu.com/index.php?tn=monline_3_dg "悬停显示") |
百度 |
2 | [我的知乎][zhihu] |
[我的知乎][zhihu] |
语法2由两部分组成:
使用URL标识符能达到复用的目的,一般把全文所有的URL标识符统一放在文章末尾,这样看起来比较干净。
URL标识符是我起的名字,不知道是否准确。囧。。
语法 | 效果 |
---|---|
[我的简介](/example/profile.md) |
我的简介 |
[Book](./Book) |
Book |
给图片加链接的本质是混合图片显示语法和普通的链接语法。普通的链接中[ ]内部是链接要显示的文本,而图片链接[ ]里面则是要显示的图片。
直接混合两种语法当然可以,但是十分啰嗦,为此我们可以使用URL标识符的形式。
# | 语法 |
---|---|
1 | [![weibo-logo]](http://weibo.com/linpiaochen) |
2 | [![](/img/zhihu.png "我的知乎,欢迎关注")][zhihu] |
3 | [![csdn-logo]][csdn] |
因为图片本身和链接本身都支持URL标识符的形式,所以图片链接也可以很简洁(见例3)。
注意,此时鼠标悬停时显示的文字是图片的title,而非链接本身的title了。
本文URL标识符都放置于文末
其实呢,每一个标题都是一个锚点,和HTML的锚点(#
)类似,比如我们
语法 | 效果 |
---|---|
[回到顶部](#readme) |
回到顶部 |
不过要注意,标题中的英文字母都被转化为小写字母了。
以前GitHub对中文支持的不好,所以中文标题不能正确识别为锚点,但是现在已经没问题啦!
就是在数字后面加一个点,再加一个空格。不过看起来起来可能不够明显。
面向对象的三个基本特征:
和无序列表一样,有序列表也有多级结构:
您可以使用这个功能来标注某个项目各项任务的完成情况。
Tip:
在GitHub的issue中使用该语法是可以实时点击复选框来勾选或解除勾选的,而无需修改issue原文。
令人吃惊的是,在哪种字节顺序是合适的这个问题上,人们表现得非常情绪化。实际上术语“little endian”(小端)和“big endian”(大端)出自Jonathan Swift的《格利佛游记》一书,其中交战的两个派别无法就应该从哪一端打开一个半熟的鸡蛋达成一致。因此,争论沦为关于社会政治的争论。只要选择了一种规则并且始终如一的坚持,其实对于哪种字节排序的选择都是任意的。
“端”(endian)的起源
以下是Jonathan Swift在1726年关于大小端之争历史的描述:
“……下面我要告诉你的是,Lilliput和Blefuscu这两大强国在过去36个月里一直在苦战。战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端,可是当今的皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了,因此他的父亲,当时的皇帝,就下了一道敕令,命令全体臣民吃鸡蛋时打破较小的一端,违令者重罚。”
数据结构
树
二叉树
平衡二叉树
满二叉树
在三个反引号后面加上编程语言的名字,另起一行开始写代码,最后一行再加上三个反引号。
public static void main(String[]args){} //Java
int main(int argc, char *argv[]) //C
echo "hello GitHub" #Bash
document.getElementById("myH1").innerHTML="Welcome to my Homepage"; //javascipt
string &operator+(const string& A,const string& B) //cpp
表头1 | 表头2 |
---|---|
表格单元 | 表格单元 |
表格单元 | 表格单元 |
表头1 | 表头2 |
---|---|
表格单元 | 表格单元 |
表格单元 | 表格单元 |
表格可以指定对齐方式
左对齐 | 居中 | 右对齐 |
---|---|---|
col 3 is | some wordy text | $1600 |
col 2 is | centered | $12 |
zebra stripes | are neat | $1 |
表格单元中的内容可以和其他大多数GFM语法配合使用,如:
名字 | 描述 |
---|---|
Help | |
Close | Closes a window |
其实前面介绍图片显示、图片链接的时候为了清晰就是放在在表格中显示的。
图片 | 描述 |
---|---|
![baidu][baidu-logo] | 百度 |
Github的Markdown语法支持添加emoji表情,输入不同的符号码(两个冒号包围的字符)可以显示出不同的表情。
比如:blush:
,可以显示:blush:。
具体每一个表情的符号码,可以查询GitHub的官方网页http://www.emoji-cheat-sheet.com。
但是这个网页每次都打开奇慢。。所以我整理到了本repo中,大家可以直接在此查看emoji。
版本控制的系统中都少不了diff的功能,即展示一个文件内容的增加与删除。
GFM中可以显示的展示diff效果。使用绿色表示新增,红色表示删除。
其语法与代码高亮类似,只是在三个反引号后面写diff,
并且其内容中,以 +
开头表示新增,-
开头表示删除。
效果如下:
+ 鸟宿池边树,僧敲月下门
- 鸟宿池边树,僧推月下门
在学会了Flask之后,我自己也搭建了几个网站,不过都是在自己本地,别人并不能看到,本想去买个域名,服务器来自己搞,但是穷啊,所以想到了用Hexo + Github Pages
来搭建一个站点,最关键的是:免费,哈哈哈。
由于Hexo上面发表博文实在是太麻烦了,所以我只是学会去部署博客,并没有在上面去维护,修改,发表博文,现在还是想把我的Flask + python做的博客发布在网上。这个就是用做入手教程看看。
要使用Hexo,需要两个东西,一个是Nodejs,一个是Git,让我们整理下胸前的红领巾开始吧。
$ cd d:/hexo
$ npm install hexo-cli -g
$ hexo init blog
$ cd blog
$ npm install
$ hexo generate
$ hexo server
Note:
当我们执行了hexo s 之后,打开localhost:4000/,这个时候我们就能看到Hexo内置的一个博客了。
但是内置的博客主题非常的丑,不喜欢怎么办,github上早就有人做好了主题,我们直接搜了拿来用就好了。
$ hexi clean
$ git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia
找到Hexo目录下的_config.yml配置文件,然后找到theme属性,将其设置为yilia。
theme:yilia
$ cd themes/yilia
$ git pull
$ hexo g # 生成
$ hexo s # 启动本地web服务器
见证奇迹了,打开localhost:4000/ 你就会看到主题已经变了,是不是很开心,但是只能你自己看到,现在我们要做的就是让大家都能看到,let's do it
GitHub Pages 本用于介绍托管在GitHub的项目,不过,由于他的空间免费稳定,用来做搭建一个博客再好不过了。
每个帐号只能有一个仓库来存放个人主页,而且仓库的名字必须是username/http://username.github.io,这是特殊的命名约定。你可以通过http://username.github.io 来访问你的个人主页。
这里特别提醒一下,需要注意的个人主页的网站内容是在master分支下的。
这里需要注意的是仓库的名字必须按照这个规则来:username/http://username.github.io
在部署前,先讲下原理:
Hexo教程:https://hexo.io/docs/deployment.html
deploy:
type: git
repo: [email protected]:rickyyangrui/rickyyangrui.github.io.git
branch: master
部署前先安装一个扩展:
$ npm install hexo-deployer-git --save
执行命令:
hexo d
$ cd d:/hexo/blog
$ git clone https://github.com/rickyyangrui/rickyyangrui.github.io.git .deploy/rickyyangrui.github.io
解释:将我们之前创建的repo克隆到本地,新建一个目录叫做.deploy用于存放克隆的代码。
hexo generate
cp -R public/* .deploy/rickyyangrui.github.io
cd .deploy/rickyyangrui.github.io
git add .
git commit -m “update”
git push origin master
解释:
hexo generate生成public文件夹下的新内容,然后将其拷贝至http://rickyyangrui.github.io的git目录下,然后使用git commit命令提交代码到http://rickyyangrui.github.io这个repo的master branch上。
需要部署的时候,执行这段脚本就可以了(比如可以将其保存为deploy.sh)。执行过程中可能需要让你输入Github账户的用户名及密码,按照提示操作即可。
每个不同的主题会需要不同的配置,主题配置文件在主题目录下的_config.yml。
以我们使用的yilia主题为例,其提供如下的配置项(theme\yilia_config.yml):
# Header
menu:
主页: /
所有文章: /archives
# 随笔: /tags/随笔
# SubNav
subnav:
github: "#"
weibo: "#"
rss: "#"
zhihu: "#"
#douban: "#"
#mail: "#"
#facebook: "#"
#google: "#"
#twitter: "#"
#linkedin: "#"
rss: /atom.xml
# Content
excerpt_link: more
fancybox: true
mathjax: true
# Miscellaneous
google_analytics: ''
favicon: /favicon.png
#你的头像url
avatar: ""
#是否开启分享
share: true
#是否开启多说评论,填写你在多说申请的项目名称 duoshuo: duoshuo-key
#若使用disqus,请在博客config文件中填写disqus_shortname,并关闭多说评论
duoshuo: true
#是否开启云标签
tagcloud: true
#是否开启友情链接
#不开启——
#friends: false
#是否开启“关于我”。
#不开启——
#aboutme: false
#开启——
aboutme: 我是谁,我从哪里来,我到哪里去?我就是我,是颜色不一样的吃货…
好了,功成身退,深藏功与名,各位,enjoy it.
写blog
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.