<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[SILICONEER]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://siliconeer.tech/</link><image><url>https://siliconeer.tech/favicon.png</url><title>SILICONEER</title><link>https://siliconeer.tech/</link></image><generator>Ghost 4.47</generator><lastBuildDate>Wed, 06 May 2026 05:41:11 GMT</lastBuildDate><atom:link href="https://siliconeer.tech/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Ghost.js优化指南之一：服务器优化]]></title><description><![CDATA[Ghost.js默认使用Ghost.js系统默认使用了node.js作为文件服务器，但静态资源服务器是nginx而非node.js的专长。NGINX可以拦截静态资源的请求并使用NGINX响应，搭配内存缓存和静态GZIP压缩，可以最大程度的发挥服务器效能。]]></description><link>https://siliconeer.tech/ghostjs-optimization-guides/</link><guid isPermaLink="false">5bf5604ac09a7406beb5bb9b</guid><category><![CDATA[博客维护]]></category><dc:creator><![CDATA[Zhang Haozhi]]></dc:creator><pubDate>Mon, 30 Oct 2017 13:29:58 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Ghost.js&#x9ED8;&#x8BA4;&#x4F7F;&#x7528;Ghost.js&#x7CFB;&#x7EDF;&#x9ED8;&#x8BA4;&#x4F7F;&#x7528;&#x4E86;node.js&#x4F5C;&#x4E3A;&#x6587;&#x4EF6;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x4F46;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;&#x662F;nginx&#x800C;&#x975E;node.js&#x7684;&#x4E13;&#x957F;&#x3002;NGINX&#x53EF;&#x4EE5;&#x62E6;&#x622A;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x7684;&#x8BF7;&#x6C42;&#x5E76;&#x4F7F;&#x7528;NGINX&#x54CD;&#x5E94;&#xFF0C;&#x642D;&#x914D;&#x5185;&#x5B58;&#x7F13;&#x5B58;&#x548C;&#x9759;&#x6001;GZIP&#x538B;&#x7F29;&#xFF0C;&#x53EF;&#x4EE5;&#x6700;&#x5927;&#x7A0B;&#x5EA6;&#x7684;&#x53D1;&#x6325;&#x670D;&#x52A1;&#x5668;&#x6548;&#x80FD;&#x3002;</p>
<h3 id>&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;&#x914D;&#x7F6E;</h3>
<p>&#x672C;&#x7AD9;&#x5728;WEB&#x670D;&#x52A1;&#x914D;&#x7F6E;&#x4E2D;&#x52A0;&#x5165;&#x4E86;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;&#xFF1A;</p>
<pre><code class="language-nginx">upstream  local_static {  
	server localhost:81;  
}  
# &#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;
server{  
	listen       81;  
	server_name 127.0.0.1;  
	location ^~ /content/ {
		root             /var/www/ghost;
	}
	location ^~ /assets/ {
		# &#x5F00;&#x542F;&#x9759;&#x6001;gzip&#xFF0C;&#x5BF9;js&#xFF0C;css&#x7B49;&#x8FDB;&#x884C;&#x9884;&#x538B;&#x7F29;
		gzip_static  on;
		root             /var/www/ghost/current/content/themes/casper;
	}
	location ^~ /public/ {
		root             /var/www/ghost/current/core/server;
	}
}
</code></pre>
<h3 id>&#x9759;&#x6001;&#x8D44;&#x6E90;&#x8DEF;&#x7531;</h3>
<p>&#x5C06;443&#x7AEF;&#x53E3;&#x7684;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x5230;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;&#xFF1A;</p>
<pre><code class="language-nginx"># &#x67E5;&#x627E;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x7F13;&#x5B58;&#xFF0C;&#x627E;&#x4E0D;&#x5230;&#x5219;&#x8F6C;&#x53D1;&#x81F3;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;
location ^~ /content/ {
	# &#x4F7F;&#x7528;cache_one&#x8FD9;&#x5757;&#x7F13;&#x5B58;
	proxy_cache cache_one;
	# &#x8BBE;&#x7F6E;&#x7F13;&#x5B58;&#x65F6;&#x95F4;
	proxy_cache_valid 200 304 302 5d;
	proxy_cache_valid any 7d;
	# &#x8BBE;&#x7F6E;&#x7F13;&#x5B58;key
	proxy_cache_key $host$uri$is_args$args;
	# &#x8BBE;&#x7F6E;&#x81EA;&#x52A8;&#x66F4;&#x65B0;&#x7F13;&#x5B58;
	proxy_cache_background_update on;
	proxy_set_header Host $host;  
	proxy_set_header X-Forwarded-For $remote_addr;
	# &#x76D1;&#x89C6;&#x662F;&#x5426;&#x547D;&#x4E2D;&#x7F13;&#x5B58;&#xFF0C;&#x5728;&#x54CD;&#x5E94;&#x5934;&#x4E2D;&#x4F1A;&#x51FA;&#x73B0;MISS&#x6216;&#x8005;HIT
	add_header X-Cache $upstream_cache_status;
	proxy_pass http://local_static; 
	proxy_hide_header  vary;    
	expires          max;
}
location ^~ /assets/ {
	proxy_cache cache_one;
	proxy_cache_valid 200 304 302 5d;
	proxy_cache_valid any 7d;
	proxy_cache_key $host$uri$is_args$args;
	proxy_cache_background_update on;
	proxy_set_header Host $host;  
	proxy_set_header X-Forwarded-For $remote_addr;
	add_header X-Cache $upstream_cache_status; 
	proxy_hide_header  vary;  
	proxy_pass http://local_static;    
	expires          max;
}
location ^~ /public/ {
	proxy_cache cache_one;
	proxy_cache_valid 200 304 302 5d;
	proxy_cache_valid any 7d;
	proxy_cache_key $host$uri$is_args$args;
	proxy_cache_background_update on;
	proxy_set_header Host $host;  
	proxy_set_header X-Forwarded-For $remote_addr;
	add_header X-Cache $upstream_cache_status; 
	proxy_hide_header  vary;  
	proxy_pass http://local_static;      
	expires          max;
} 
</code></pre>
<p>ghost.js&#x7684;&#x9759;&#x6001;&#x6587;&#x4EF6;&#x5728;/content&#xFF0C;/assets&#xFF0C;/public&#x4E09;&#x4E2A;&#x6587;&#x4EF6;&#x5939;&#x4E2D;&#xFF0C;&#x62E6;&#x622A;&#x8FD9;&#x4E09;&#x4E2A;&#x5730;&#x5740;&#x7684;&#x8BF7;&#x6C42;&#xFF0C;&#x5E76;&#x8F6C;&#x53D1;&#x5230;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x7F13;&#x5B58;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x535A;&#x5BA2;&#x7684;&#x52A8;&#x9759;&#x5206;&#x79BB;&#x3002;&#x8BA9;node.js&#x4ECE;&#x6587;&#x4EF6;&#x8BFB;&#x53D6;&#x4E2D;&#x89E3;&#x653E;&#x51FA;&#x6765;&#x3002;<br>
&#x540C;&#x65F6;&#xFF0C;&#x8FD9;&#x4E2A;&#x914D;&#x7F6E;&#x4F7F;&#x7528;&#x4E86;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x7684;&#x5185;&#x5B58;&#x7F13;&#x5B58;&#xFF0C;&#x53EF;&#x4EE5;&#x51CF;&#x5C11;&#x78C1;&#x76D8;&#x8BFB;&#x5199;&#x3002;&#x5177;&#x4F53;&#x5173;&#x4E8E;&#x5185;&#x5B58;&#x7F13;&#x5B58;&#xFF0C;&#x8BF7;&#x9605;&#x8BFB;&#x4E0A;&#x4E00;&#x7BC7;&#xFF1A;<a href="https://zerok.me/blog-construction-guides/">&#x300A;&#x535A;&#x5BA2;&#x5EFA;&#x8BBE;&#x6307;&#x5357;&#x300B;</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[博客建设指南]]></title><description><![CDATA[本文介绍了使用ghost.js建设博客和nginx服务器配置的方法。ghost.js是依赖node.js的前后端统一的博客系统，它轻巧，灵活，高效，优雅，是建设博客的不二之选。文章详述了使用Ghost-CLI安装Ghost.js和nginx全局和WEB配置的方法。]]></description><link>https://siliconeer.tech/blog-construction-guides/</link><guid isPermaLink="false">5bf5604ac09a7406beb5bb9a</guid><category><![CDATA[博客维护]]></category><dc:creator><![CDATA[Zhang Haozhi]]></dc:creator><pubDate>Mon, 30 Oct 2017 12:44:07 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x672C;&#x6587;&#x4ECB;&#x7ECD;&#x4E86;&#x4F7F;&#x7528;ghost.js&#x5EFA;&#x8BBE;&#x535A;&#x5BA2;&#x548C;nginx&#x670D;&#x52A1;&#x5668;&#x914D;&#x7F6E;&#x7684;&#x65B9;&#x6CD5;&#x3002;ghost.js&#x662F;&#x4F9D;&#x8D56;node.js&#x7684;&#x524D;&#x540E;&#x7AEF;&#x7EDF;&#x4E00;&#x7684;&#x535A;&#x5BA2;&#x7CFB;&#x7EDF;&#xFF0C;&#x5B83;&#x8F7B;&#x5DE7;&#xFF0C;&#x7075;&#x6D3B;&#xFF0C;&#x9AD8;&#x6548;&#xFF0C;&#x4F18;&#x96C5;&#xFF0C;&#x662F;&#x5EFA;&#x8BBE;&#x535A;&#x5BA2;&#x7684;&#x4E0D;&#x4E8C;&#x4E4B;&#x9009;&#x3002;&#x6587;&#x7AE0;&#x8BE6;&#x8FF0;&#x4E86;&#x4F7F;&#x7528;Ghost-CLI&#x5B89;&#x88C5;Ghost.js&#x548C;nginx&#x5168;&#x5C40;&#x548C;WEB&#x914D;&#x7F6E;&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<h1 id="ghsotjs">&#x5B89;&#x88C5;Ghsot.js</h1>
<p>&#x672C;&#x7AD9;&#x4F7F;&#x7528;Ghost-CLI&#x5B89;&#x88C5;&#x3002;Ghost-CLI&#x53EF;&#x4EE5;&#x6267;&#x884C;&#x4E0B;&#x8F7D;&#x7A0B;&#x5E8F;&#xFF0C;&#x8BBE;&#x7F6E;&#x535A;&#x5BA2;&#xFF0C;&#x8FDE;&#x63A5;&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x8BBE;&#x7F6E;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x6839;&#x636E;&#x4E0D;&#x540C;&#x7CFB;&#x7EDF;&#x8BBE;&#x7F6E;&#x4E0D;&#x540C;&#x5B88;&#x62A4;&#x8FDB;&#x7A0B;&#x7B49;&#x5DE5;&#x4F5C;&#x3002;&#x8BE6;&#x7EC6;&#x6559;&#x7A0B;&#x53EF;&#x4EE5;&#x53C2;&#x8003;<a href="https://docs.ghost.org/v1.0.0/docs/install">&#x5B98;&#x7F51;</a>&#x3002;</p>
<h3 id="ghostcli">&#x5B89;&#x88C5;Ghost-CLI</h3>
<pre><code class="language-bash">sudo apt-get update
sudo npm i -g ghost-cli
</code></pre>
<h3 id>&#x8BBE;&#x7F6E;&#x9632;&#x706B;&#x5899;</h3>
<pre><code class="language-bash">sudo ufw allow &apos;Nginx Full&apos;
</code></pre>
<blockquote>
<p>&#x6B64;&#x6761;&#x547D;&#x4EE4;&#x53EA;&#x5BF9;16.04&#x4EE5;&#x4E0A;&#x7CFB;&#x7EDF;&#x6709;&#x6548;</p>
</blockquote>
<h3 id>&#x8BBE;&#x7F6E;&#x7F51;&#x7AD9;&#x76EE;&#x5F55;</h3>
<pre><code class="language-bash">mkdir /var/www/ghost
</code></pre>
<h3 id="ghostcli">&#x4F7F;&#x7528;Ghost-CLI&#x914D;&#x7F6E;&#x7F51;&#x7AD9;</h3>
<pre><code class="language-bash">cd /var/www/ghost
ghsot install
</code></pre>
<p>&#x8BF7;&#x6309;&#x7167;&#x6307;&#x793A;&#x4E00;&#x6B65;&#x4E00;&#x6B65;&#x5B8C;&#x6210;&#x5B89;&#x88C5;&#x3002;</p>
<h3 id="systemd">&#x4F7F;&#x7528;systemd&#x64CD;&#x4F5C;&#x7F51;&#x7AD9;</h3>
<ul>
<li>&#x542F;&#x52A8;ghost&#xFF1A;<code>systemctl start ghost_localhost</code></li>
<li>&#x505C;&#x6B62;ghost&#xFF1A;<code>systemctl stop ghost_localhost</code></li>
<li>&#x91CD;&#x542F;ghost&#xFF1A;<code>systemctl restart ghost_localhost</code></li>
</ul>
<blockquote>
<p><code>ghost_localhost</code>&#x6839;&#x636E;&#x5B89;&#x88C5;&#x540D;&#x79F0;&#x800C;&#x53D8;&#x5316;</p>
</blockquote>
<h1 id="nginx">&#x914D;&#x7F6E;nginx&#x524D;&#x7AEF;&#x670D;&#x52A1;</h1>
<p>Ghost.js&#x4F5C;&#x4E3A;&#x540E;&#x7AEF;&#x670D;&#x52A1;&#xFF0C;&#x76D1;&#x542C;localhost:2368&#x3002;nginx&#x4F5C;&#x4E3A;&#x524D;&#x7AEF;&#x670D;&#x52A1;&#xFF0C;&#x5C06;&#x8BF7;&#x6C42;&#x4ECE;&#x8FDC;&#x7A0B;&#x8BF7;&#x6C42;&#x8F6C;&#x53D1;&#x5230;2368&#x7AEF;&#x53E3;&#x3002;&#x540C;&#x65F6;&#x4F7F;&#x7528;nginx&#x4F5C;&#x4E3A;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;&#x548C;&#x7F13;&#x5B58;&#xFF0C;&#x53EF;&#x4EE5;&#x63D0;&#x9AD8;&#x7F51;&#x7AD9;&#x6027;&#x80FD;&#x3002;</p>
<h3 id="nginx">Nginx &#x5168;&#x5C40;&#x914D;&#x7F6E;</h3>
<p>&#x6253;&#x5F00;<code>/usr/local/nginx/conf/nginx.conf</code>&#xFF0C;&#x8FDB;&#x884C;nginx&#x5168;&#x5C40;&#x914D;&#x7F6E;&#x3002;</p>
<pre><code class="language-nginx">
# &#x6839;&#x636E;&#x670D;&#x52A1;&#x5668;cpu&#x6838;&#x6570;&#x800C;&#x5B9A;
worker_processes  2;

events {
	# nginx&#x4E8B;&#x4EF6;&#x8C03;&#x5EA6;&#x65B9;&#x5F0F;&#xFF0C;&#x9ED8;&#x8BA4;epoll
    use epoll;
	# nginx&#x6700;&#x5927;&#x8FDE;&#x63A5;&#x6570;
    worker_connections  65535;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
	# gzip&#x538B;&#x7F29;&#x5F00;&#x542F;
    gzip  on;
	# &#x5C0F;&#x4E8E;1KB&#x7684;&#x6587;&#x4EF6;&#x5C06;&#x4E0D;&#x88AB;&#x538B;&#x7F29;
    gzip_min_length 1024;
	# &#x538B;&#x7F29;&#x7B49;&#x7EA7;&#x4E3A;6&#xFF0C;&#x5927;&#x4E8E;6&#x6548;&#x679C;&#x4E0D;&#x518D;&#x660E;&#x663E;
    gzip_comp_level 6;
    gzip_vary on;
	# &#x8BBE;&#x7F6E;&#x4E0D;&#x538B;&#x7F29;&#x56FE;&#x7247;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php font/ttf font/otf font/x-wolf image/svg+xml;

	# &#x8BBE;&#x7F6E;&#x53CD;&#x5411;&#x4EE3;&#x7406;&#x7F13;&#x51B2;&#x533A;
    client_body_buffer_size 512k;
    proxy_connect_timeout 5;
    proxy_read_timeout 60;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;

	# &#x8BBE;&#x7F6E;&#x9759;&#x6001;&#x6587;&#x4EF6;&#x7684;&#x5185;&#x5B58;&#x7F13;&#x5B58;&#xFF0C;/dev/shm&#x76EE;&#x5F55;&#x5373;&#x4E3A;&#x5185;&#x5B58;&#x8BBE;&#x5907;
    proxy_temp_path /dev/shm/nginx_temp;
	# &#x8BBE;&#x7F6E;&#x9759;&#x6001;&#x6587;&#x4EF6;&#x7684;&#x5185;&#x5B58;&#x7F13;&#x5B58;&#xFF0C;&#x8FD9;&#x91CC;&#x8BBE;&#x7F6E;&#x4E86;&#x4E00;&#x5757;&#x540D;&#x4E3A;cache_one&#x7684;&#x6700;&#x5927;128m&#x7684;&#x7F13;&#x5B58;
    proxy_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=cache_one:64m inactive=7d max_size=128m;
	# &#x4E0D;&#x7F13;&#x5B58;HTML
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

	# &#x52A0;&#x8F7D;&#x5177;&#x4F53;&#x7684;&#x7F51;&#x7AD9;&#x8BBE;&#x7F6E;&#xFF0C;&#x8FD9;&#x6837;&#x53EF;&#x4EE5;&#x4E0D;&#x4F7F;&#x7528;root&#x6743;&#x9650;&#x64CD;&#x4F5C;nginx&#x914D;&#x7F6E;
    include     /var/www/nginx_conf/*.conf;
}

</code></pre>
<h3 id="ghost">Ghost &#x7AD9;&#x70B9;&#x914D;&#x7F6E;</h3>
<pre><code class="language-nginx"># http&#x670D;&#x52A1;&#x5668;
server{
	listen 80;
	server_name          zerok.me www.zerok.me;
	server_tokens        off;
	# Let&apos;s Encrypt &#x8BC1;&#x4E66;&#x9A8C;&#x8BC1;
	location ^~ /.well-known/acme-challenge/ {
			alias /var/www/challenges/;
			try_files $uri =404;
		}
	# &#x76D1;&#x542C;http&#xFF0C;&#x91CD;&#x5B9A;&#x5411;&#x81F3;https
	location / {
		rewrite       ^/(.*)$ https://zerok.me/$1 permanent;
	}
}
upstream  local_static {  
		 server localhost:81;  
}  
# &#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;
server{  
	listen       81;  
	server_name 127.0.0.1;  
	location ^~ /content/ {
		root             /var/www/ghost;
	}
	location ^~ /assets/ {
		# &#x5F00;&#x542F;&#x9759;&#x6001;gzip&#xFF0C;&#x5BF9;js&#xFF0C;css&#x7B49;&#x8FDB;&#x884C;&#x9884;&#x538B;&#x7F29;
		gzip_static  on;
		root             /var/www/ghost/current/content/themes/casper;
	}
    location ^~ /public/ {
		root             /var/www/ghost/current/core/server;
	}
}
# https&#x670D;&#x52A1;&#x5668;	
server {
	listen               443 ssl http2 fastopen=3 reuseport;

	server_name          zerok.me www.zerok.me;
	server_tokens        off;

	# &#x4E2D;&#x95F4;&#x8BC1;&#x4E66; + &#x7AD9;&#x70B9;&#x8BC1;&#x4E66;
	ssl_certificate      /var/www/tls/chained.pem;

	# &#x521B;&#x5EFA; CSR &#x6587;&#x4EF6;&#x65F6;&#x7528;&#x7684;&#x5BC6;&#x94A5;
	ssl_certificate_key  /var/www/tls/domain.key;

	ssl_ciphers                EECDH+AES128:EECDH+AES256:EECDH+3DES:!MD5;

	ssl_prefer_server_ciphers  on;

	ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;

	ssl_session_cache          shared:SSL:50m;
	ssl_session_timeout        1d;

	ssl_session_tickets        on;


	ssl_stapling               on;
	ssl_stapling_verify        on;

	# &#x6839;&#x8BC1;&#x4E66; + &#x4E2D;&#x95F4;&#x8BC1;&#x4E66;
	ssl_trusted_certificate    /var/www/tls/full_chained.pem;

	resolver                   114.114.114.114 valid=300s;
	resolver_timeout           10s;

	access_log                 /var/www/nginx_log/zerok_me.log;

	# &#x5C06;www.zerok.me&#x91CD;&#x5B9A;&#x5411;&#x81F3;zerok.me
	if ($host != &apos;zerok.me&apos; ) {
		rewrite          ^/(.*)$  https://zerok.me/$1 permanent;
	}
	# &#x67E5;&#x627E;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x7F13;&#x5B58;&#xFF0C;&#x627E;&#x4E0D;&#x5230;&#x5219;&#x8F6C;&#x53D1;&#x81F3;&#x9759;&#x6001;&#x8D44;&#x6E90;&#x670D;&#x52A1;&#x5668;
	location ^~ /content/ {
		# &#x4F7F;&#x7528;cache_one&#x8FD9;&#x5757;&#x7F13;&#x5B58;
		proxy_cache cache_one;
		# &#x8BBE;&#x7F6E;&#x7F13;&#x5B58;&#x65F6;&#x95F4;
		proxy_cache_valid 200 304 302 5d;
		proxy_cache_valid any 7d;
		# &#x8BBE;&#x7F6E;&#x7F13;&#x5B58;key
		proxy_cache_key $host$uri$is_args$args;
		# &#x8BBE;&#x7F6E;&#x81EA;&#x52A8;&#x66F4;&#x65B0;&#x7F13;&#x5B58;
		proxy_cache_background_update on;
		proxy_set_header Host $host;  
		proxy_set_header X-Forwarded-For $remote_addr;
		# &#x76D1;&#x89C6;&#x662F;&#x5426;&#x547D;&#x4E2D;&#x7F13;&#x5B58;&#xFF0C;&#x5728;&#x54CD;&#x5E94;&#x5934;&#x4E2D;&#x4F1A;&#x51FA;&#x73B0;MISS&#x6216;&#x8005;HIT
		add_header X-Cache $upstream_cache_status;
		proxy_pass http://local_static; 
		proxy_hide_header  vary;    
		expires          max;
	}
	location ^~ /assets/ {
		proxy_cache cache_one;
		proxy_cache_valid 200 304 302 5d;
		proxy_cache_valid any 7d;
		proxy_cache_key $host$uri$is_args$args;
		proxy_cache_background_update on;
		proxy_set_header Host $host;  
		proxy_set_header X-Forwarded-For $remote_addr;
		add_header X-Cache $upstream_cache_status; 
		proxy_hide_header  vary;  
		proxy_pass http://local_static;    
		expires          max;
	}
	location ^~ /public/ {
		proxy_cache cache_one;
		proxy_cache_valid 200 304 302 5d;
		proxy_cache_valid any 7d;
		proxy_cache_key $host$uri$is_args$args;
		proxy_cache_background_update on;
		proxy_set_header Host $host;  
		proxy_set_header X-Forwarded-For $remote_addr;
		add_header X-Cache $upstream_cache_status; 
		proxy_hide_header  vary;  
		proxy_pass http://local_static;      
		expires          max;
	} 
	# &#x5C06;&#x52A8;&#x6001;&#x5185;&#x5BB9;&#x8F6C;&#x53D1;&#x7ED9;Ghost&#x670D;&#x52A1;
	location / {
		proxy_set_header   X-Real-IP $remote_addr;
		proxy_set_header   Host      $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
		proxy_hide_header  X-Powered-By;
		proxy_hide_header  server;
		proxy_hide_header  vary;
		proxy_pass         http://127.0.0.1:2368;
	}
}
</code></pre>
<p>&#x81F3;&#x6B64;&#xFF0C;&#x535A;&#x5BA2;&#x7684;&#x914D;&#x7F6E;&#x5DE5;&#x4F5C;&#x5DF2;&#x7ECF;&#x5168;&#x90E8;&#x5B8C;&#x6210;&#x3002;&#x91CD;&#x542F;nginx&#x548C;ghost&#x670D;&#x52A1;&#xFF0C;&#x5F00;&#x59CB;&#x535A;&#x5BA2;&#x4E4B;&#x65C5;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[服务器设置指南]]></title><description><![CDATA[文章介绍了将Linode VPS设置为web服务器的方法，这包含了更换Linode内核，安装破解版锐速，编译安装Nginx和安装Node.js的方法和脚本。]]></description><link>https://siliconeer.tech/server-construction-guides/</link><guid isPermaLink="false">5bf5604ac09a7406beb5bb99</guid><category><![CDATA[博客维护]]></category><dc:creator><![CDATA[Zhang Haozhi]]></dc:creator><pubDate>Mon, 30 Oct 2017 09:07:30 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>&#x6587;&#x7AE0;&#x4ECB;&#x7ECD;&#x4E86;&#x5C06;Linode VPS&#x8BBE;&#x7F6E;&#x4E3A;web&#x670D;&#x52A1;&#x5668;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x8FD9;&#x5305;&#x542B;&#x4E86;&#x66F4;&#x6362;Linode&#x5185;&#x6838;&#xFF0C;&#x5B89;&#x88C5;&#x7834;&#x89E3;&#x7248;&#x9510;&#x901F;&#xFF0C;&#x7F16;&#x8BD1;&#x5B89;&#x88C5;Nginx&#x548C;&#x5B89;&#x88C5;Node.js&#x7684;&#x65B9;&#x6CD5;&#x548C;&#x811A;&#x672C;&#x3002;</p>
<h1 id>&#x66F4;&#x6362;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5185;&#x6838;</h1>
<p>Linode VPS&#x7684;&#x9ED8;&#x8BA4;&#x5185;&#x6838;&#x662F;linode&#x81EA;&#x5DF1;&#x7F16;&#x8BD1;&#x7684;&#x7248;&#x672C;&#xFF0C;&#x6709;&#x8BF8;&#x591A;&#x4E0D;&#x4FBF;&#xFF0C;&#x6545;&#x9996;&#x5148;&#x66F4;&#x6362;&#x5185;&#x6838;&#x3002;&#x5EFA;&#x8BAE;&#x76F4;&#x63A5;&#x4F7F;&#x7528;root&#x8D26;&#x6237;&#x64CD;&#x4F5C;&#x3002;</p>
<h3 id="ipv6">&#x7981;&#x7528;ipv6</h3>
<blockquote>
<p>ipv6&#x8BBE;&#x7F6E;&#x4E0D;&#x5F53;&#x4F1A;&#x4EA7;&#x751F;&#x5F88;&#x591A;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x6CA1;&#x6709;&#x660E;&#x663E;&#x63D0;&#x4F9B;&#x597D;&#x5904;&#xFF0C;&#x6240;&#x4EE5;&#x76F4;&#x63A5;&#x5173;&#x95ED;</p>
</blockquote>
<pre><code class="language-bash">sudo echo &quot;net.ipv6.conf.all.disable_ipv6 =1&quot; &gt;&gt; /etc/sysctl.conf
sudo echo &quot;net.ipv6.conf.default.disable_ipv6 =1&quot; &gt;&gt; /etc/sysctl.conf
sudo echo &quot;net.ipv6.conf.lo.disable_ipv6 =1&quot; &gt;&gt; /etc/sysctl.conf
sudo sysctl -p
</code></pre>
<h3 id="44">&#x5B89;&#x88C5;4.4&#x5185;&#x6838;</h3>
<pre><code class="language-bash">sudo apt-get update
sudo apt-get install -y linux-image-extra-4.4.0-47-generic grub2
sudo update-grub2
</code></pre>
<h3 id="grub2">&#x5C06;&#x7CFB;&#x7EDF;&#x5F15;&#x5BFC;&#x5207;&#x6362;&#x5230;GRUB2</h3>
<p>&#x5728;Linode&#x63A7;&#x5236;&#x9762;&#x677F;&#x4E2D;&#x9009;&#x62E9;&#x201C;Edit&#x201D;&#xFF0C;&#x5728;&#x9875;&#x9762;&#x4E2D;&#x5C06;&#x5F15;&#x5BFC;&#x9009;&#x9879;&#x7531;linode&#x5185;&#x6838;&#x5207;&#x6362;&#x81F3;GRUB2&#xFF0C;&#x6B64;&#x65F6;&#x7CFB;&#x7EDF;&#x5C06;&#x4ECE;&#x6807;&#x51C6;&#x7684;4.4.0&#x5185;&#x6838;&#x542F;&#x52A8;&#x3002;</p>
<h1 id>&#x5B89;&#x88C5;&#x9510;&#x901F;</h1>
<p>&#x7531;&#x4E8E;&#x670D;&#x52A1;&#x5668;&#x5728;&#x7F8E;&#x56FD;&#x897F;&#x6D77;&#x5CB8;&#xFF0C;&#x7EBF;&#x8DEF;&#x4E22;&#x5305;&#x4E25;&#x91CD;&#xFF0C;&#x4F7F;&#x7528;TCP&#x5355;&#x8FB9;&#x52A0;&#x901F;&#x975E;&#x5E38;&#x5FC5;&#x8981;&#x3002;<br>
&#x672C;&#x7AD9;&#x4F7F;&#x7528;&#x7F51;&#x53CB;&#x81EA;&#x5236;&#x7684;&#x4E00;&#x952E;&#x9510;&#x901F;&#x5305;&#x3002;</p>
<pre><code class="language-bash">cd ~
wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh 
chmod +x appex.sh
bash appex.sh install
</code></pre>
<p>&#x8BE6;&#x7EC6;&#x60C5;&#x51B5;&#x8BF7;&#x9605;&#x8BFB;&#x539F;&#x6587;<br>
<a href="https://moeclub.org/2017/03/08/14/">https://moeclub.org/2017/03/08/14/</a><br>
GitHub&#x9879;&#x76EE;&#x5730;&#x5740;:<br>
<a href="https://github.com/0oVicero0/serverSpeeder_Install">https://github.com/0oVicero0/serverSpeeder_Install</a></p>
<h1 id="nginx">&#x5B89;&#x88C5;nginx</h1>
<p>&#x5B98;&#x65B9;&#x6E90;&#x4E2D;&#x7684;nginx&#x7248;&#x672C;&#x5341;&#x5206;&#x53E4;&#x8001;&#xFF0C;&#x4E0D;&#x5EFA;&#x8BAE;&#x4F7F;&#x7528;apt-get&#x5B89;&#x88C5;nginx&#xFF0C;&#x5E94;&#x9009;&#x62E9;&#x7F16;&#x8BD1;&#x5B89;&#x88C5;nginx&#x3002;&#x540C;&#x6837;&#x7684;&#xFF0C;&#x7CFB;&#x7EDF;&#x81EA;&#x5E26;&#x7684;OpenSSL&#x5E93;&#x4E5F;&#x5341;&#x5206;&#x8001;&#x65E7;&#xFF0C;&#x5EFA;&#x8BAE;&#x5C06;&#x65B0;&#x7684;OpenSSL&#x9759;&#x6001;&#x7F16;&#x8BD1;&#x5230;nginx&#x4E2D;&#x3002;</p>
<h6 id>&#x5B89;&#x88C5;&#x5FC5;&#x8981;&#x5E93;</h6>
<pre><code class="language-bash">sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g-dev unzip git
</code></pre>
<h3 id="openssl">&#x4E0B;&#x8F7D;OpenSSL</h3>
<p>&#x672C;&#x7AD9;&#x4F7F;&#x7528;1.0.2k&#x7248;&#x672C;&#x7684;OpenSSL&#xFF0C;1.1.0&#x7248;&#x672C;&#x7684;OpenSSL&#x6E90;&#x4EE3;&#x7801;&#x7EC4;&#x7EC7;&#x5F62;&#x5F0F;&#x53D1;&#x751F;&#x53D8;&#x5316;&#xFF0C;nginx&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x7F16;&#x8BD1;&#x3002;</p>
<pre><code class="language-bash">wget -O openssl.tar.gz -c https://github.com/openssl/openssl/archive/OpenSSL_1_0_2k.tar.gz
tar zxf openssl.tar.gz
mv openssl-OpenSSL_1_0_2k/ openssl
</code></pre>
<h3 id="nginx">&#x4E0B;&#x8F7D;&#x5E76;&#x7F16;&#x8BD1;nginx</h3>
<pre><code class="language-bash">wget -O nginx.tar.gz -c https://nginx.org/download/nginx-1.12.2.tar.gz
tar zxf nginx.tar.gz
cd nginx-1.12.2/
./configure --with-openssl=../openssl --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module
make
make install
</code></pre>
<h3 id="nginx">&#x5B89;&#x88C5;nginx&#x670D;&#x52A1;</h3>
<blockquote>
<p>&#x4F7F;&#x7528;systemd&#x4F5C;&#x4E3A;nginx&#x7684;&#x5B88;&#x62A4;&#x8FDB;&#x7A0B;&#xFF0C;&#x53EA;&#x6709;ubuntu 16.04&#x4EE5;&#x4E0A;&#x7684;&#x7CFB;&#x7EDF;&#x624D;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x3002;</p>
</blockquote>
<pre><code class="language-ini">[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target
</code></pre>
<p>&#x5C06;&#x4E0A;&#x9762;&#x7684;&#x5185;&#x5BB9;&#x4FDD;&#x5B58;&#x5230;<code>/etc/systemd/system/nginx.service</code><br>
&#x8FD0;&#x884C;<code>systemctl enable nginx.service &amp;&amp; systemctl start nginx.service</code></p>
<h1 id="nodejsmysql">&#x5B89;&#x88C5;node.js&#x548C;MySQL</h1>
<p>&#x672C;&#x7AD9;&#x4F7F;&#x7528;node.js&#x5B98;&#x7F51;&#x7ED9;&#x51FA;&#x7684;&#x5B89;&#x88C5;&#x65B9;&#x6CD5;&#xFF08; <a href="https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions">https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions</a> &#xFF09;</p>
<pre><code class="language-bash">curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
</code></pre>
<blockquote>
<p>&#x8BF7;&#x5B89;&#x88C5;LTS&#x7248;&#x672C;&#xFF0C;Ghost&#x53EA;&#x652F;&#x6301;LTS&#x7248;&#x672C;&#x7684;node.js</p>
</blockquote>
<p>&#x5B89;&#x88C5;MySQL</p>
<pre><code class="language-bash">sudo apt-get update
sudo apt-get install -y mysql-server
</code></pre>
<p>&#x81F3;&#x6B64;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x7684;&#x57FA;&#x7840;&#x8BBE;&#x65BD;&#x5DF2;&#x7ECF;&#x642D;&#x5EFA;&#x5B8C;&#x6210;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>