看得透又看得远者prevail. ppt.cc/flUmLx ppt.cc/fqtgqx ppt.cc/fZsXUx ppt.cc/fhWnZx ppt.cc/fnrkVx ppt.cc/f2CBVx
ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/fIr1ax ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net ppt.cc/fwpCex ppt.cc/fxcLIx ppt.cc/foX6Ux linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com ppt.cc/ffAGfx ppt.cc/fJbezx ppt.cc/fNIQDx ppt.cc/fCSllx ppt.cc/fybDVx ppt.cc/fIMQxx ppt.cc/fKlBax
Total Pageviews
Saturday, 16 November 2024
Linux下Apache的并发连接数和带宽控制
Friday, 1 November 2024
如何使Apache做反向代理
需要启用apache的反代模块 mod_proxy.c
<VirtualHost *:80>
ServerName your_domain.com
ServerAlias
RewriteEngine On
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://localhost:23366/$1 [P]
<IfModule mod_proxy.c>
ProxyRequests Off
SSLProxyEngine on
ProxyPass / http://localhost:23366/
ProxyPassReverse / http://localhost:23366/
</IfModule>
</VirtualHost>
--------------------------------------------------------
如何用caddy做反向代理
nano /etc/caddy/Caddyfile
yourdomain.com {
tls /etc/caddy/ssl/cert.pem /etc/caddy/ssl/cert.key
reverse_proxy http://localhost:23366 {
header_up X-Forwarded-For {header.X-Forwarded-For}
}
}
执行重载命令:
systemctl reload caddy
--------------------------
如何使nginx做反向代理
编辑nginx的配置文件:
server
{
listen 80;
listen [::]:80;
server_name your_domain.com;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:23366/;
}
}
如果你正在使用 CDN 或者 Nginx 等可信的反向代理服务器,那么你需要在「设置」-「服务器」选项 -「代理标头名 (http.proxy_header
)」填写包含用户真实 IP 的请求头字段名,如:X-Real-IP
Monday, 15 July 2024
apache启用mod_expires, 为静态页面加上缓存
Expires headers字面翻译:到期头,就是告诉浏览器一个过期时间,在这个过期时间之内,浏览器保留缓存的!这样再次进入博客, 就减少了http 请求了,速度就快了!
如何设置
apache主机的博客目录下有一个.htaccess 这样一个文件(有的是隐藏起来了)。这个文件功能很强大。在里面添加一些语句,就能告诉浏览器到期时间了。
下面一些简单的语句。
语句格式1:ExpiresByType 类型 A/M+时间(以秒为单位)
A:access表示从浏览器访问时间算起
M:modification表示文件修改时间算起
如:ExpiresByType image/png A604800 就是设置png格式的缓存时间为7天
语句格式2:ExpiresByType 类型 描述性语言
描述性语言:modification、access、now |plus|years、months、weeks、days、hours、minutes、seconds
如:ExpiresByType image/png “access plus 7 days” 设置png格式的缓存时间为7天
语句格式3:匹配格式
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
ExpiresDefault A604800
</FilesMatch>
表示匹配jpg|jpeg|png|gif|swf格式的文件缓存为7天
是不是很简单!
然后给出我写的,你可以在此基础上根据你的更改频率修改。
<IfModule mod_expires.c>
#开启
ExpiresActive On
#以下是针对不同的文件类型设置不同的缓存时间
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType image/svg A604800
</IfModule>
一些规则
静态文件:落实“永不过期”的原则,通过设置一个足够长的过期时间来实现。
动态文件:设置一个适当的 Cache-Control 头。怎么才算适当?原则很简单,根据这个动态内容的变更频率做出设置,经常修改的,就设置较短的过期时间,不怎么变动的就设置长一些的过期时间。
html文件绝对不要缓存,否则会出现一系列的问题!这一点在 PageSpeed 的 Leverage browser caching 规则中也明确提到了:
In general, HTML is not static, and shouldn’t be considered cacheable.
通常是这些文件类型需要缓存:
Images: jpg, gif, png
favicon/ico
JavaScript: js
CSS: css
Flash: swf
PDF: pdf
media files:视频,音频文件
为静态文件名加上时间戳或版本号(非常重要!不然访客怎么知道你的要不要清除缓存来获得最新的代码文件呢)
最后要注意的就是添加了(长时间的) Expires headers 的文件,如果在设置的过期时间内需要修改时,你必须修改文件名或者添加修改文件的时间戳。这样用户再访问页面时,才会向服务器请求新文件。例如你需要修改首页的layout.css文件,你可以这么处理:
// 原来的调用处理
<link href="/css/layout.css" rel="stylesheet" />
// 调用新文件的处理
<link href="/css/layout-v20140913.css" rel="stylesheet" />
// 或者这么处理
<link href="/css/layout.css?version=v20140913" rel="stylesheet" />
参考文章:
apache启用mod_expires或mod_headers设置静态文件缓存时间
Friday, 26 August 2022
子目录部署Flask, 解决URL重定向错误
初学Flask的朋友,有一些是跟我一样纯为了娱乐,没有什么做项目的需求,也不会有太多接触服务器并部署项目的机会。这类人里不少会有自己的个人主页,相信不少人会想,能不能把自己的Flask小工具发布到个人主页的子目录下呢?
看过不少不懂装懂的人冒充专家一本正经地胡说八道说“开发Flask的哪会有机会在子目录部署项目?”或“Flask本身就是为了完整建站做考量的,谁会在子目录部署项目?”云云。这些人基本上是不太如流的初级程序员,没有见过大阵仗。因为在不同层级的目录配置不同项目在企业界是相当常见的,如果你只是单纯参加了一个小团队开发了一个小型app就在这胡说八道,那是误导热心群众。
我先说一下不少人的疑惑是什么,举一个网上看到的例子:
我在个人主页 http://abc.com 创建了一个叫app的子目录,部署了一个Flask程序,app一切正常。输入http://abc.com/app,一切正常。于是我开始增加一个登录功能,当用户访问首页http://abc.com/app时,如果发现用户没有登录,自动跳转到http://abc.com/app/login 却重定向到了http://abc.com/login,导致了404找不到页面的错误。我试了很多很多方法,都没搞定,求助大家。
关于这个问题怎么解答的都有,有人扯 URL_PREFIX,也有扯 APPLICATION_ROOT的,更有人哗众取宠说 “当然还有个办法是自己实现 url_for,但是你不一定能做好”。这种解决方式是完全找错了根源,虽然这是目录定向错误的问题,但根本原因不在于Flask项目本身的路径识别,因此跟PREFIX和APPLICATION_ROOT没有半毛钱关系。我还看到有人说Blueprint的,这个接近了,但还是没有绕出Flask本身的思维壁垒。
真正的解决方式,其实很简单,可以说超级简单,爆简单!因为根本问题不在于Flask项目本身内部结构,因为内部一通乱配置你还是会发现虽然路径看似对了但依然返回404。解决问题的根源在于自目录下.htaccess文件,一般无论GoDaddy也好,Bluehost 或者 Namecheap 也好,但凡使用cPanel的这类 web host基本上在你创建了Python 小程序后,会自动在自目录下创建一个.htaccess文件,包含 PassengerAppRoot, PassengerBaseURI 以及 PassengerPython 三行代码,你只需要在第四行加入一段
完事.RewriteCond %{REQUEST_URI} !^/YourSubDirectory