從Nginx遷移回到Lighttpd以及相關配置 — High5!
我們的基礎設施中有一些執行NGINX的FreeBSD機器。在F5 最近宣佈購買NGINX之後,我們決定回到Lighttpd。
我們看到很多開源專案在被收購後表現並不是那麼良好,我們認為這次收購不會對專案有利。
幾年前Lighttpd專案停滯不前,它讓我們轉向NGINX。最近幾年它再次活躍起來,我們決定退回去。
在這篇文章中,我們描述了Lighttpd配置,以涵蓋NGINX上的所有用途。
Lighttpd中的許多選項都是透過使用模組啟用的。這些是我們在所有Lighttpd伺服器上啟用的模組。
server.modules = ( "mod_auth", "mod_expire", "mod_compress", "mod_rewrite", "mod_redirect", "mod_alias", "mod_access", "mod_setenv", "mod_evhost", "mod_fastcgi", "mod_accesslog", "mod_openssl" ) |
指定Lighttpd偵聽的IP和埠是以幾種不同的方式定義的。對於IPv4 server.port和server.bind。對於IPv6,您必須使用$ SERVER [“socket”]。SSL配置也是如此。
server.port = "80" server.bind = "0.0.0.0" $SERVER["socket"] == "[::]:80" { } $SERVER["socket"] == "[::]:443" { } $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/usr/local/etc/ssl/certs/example.com/combined.pem" ssl.ca-file = "/usr/local/etc/ssl/certs/example.com/chain.pem" ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES128+EECDH:AES128+EDH" ssl.dh-file = "/usr/local/etc/ssl/certs/dhparam.pem" ssl.ec-curve = "secp384r1" setenv.add-response-header = ("Strict-Transport-Security" => "max-age=31536000; includeSubdomains") } |
Lighttpd需要PEM證照。您可以輕鬆建立:
# cat domain.key domain.crt > combined.pem
您可以使用以下命令建立dhparam.pem檔案:
# openssl dhparam -out dhparam.pem 4096
這些是我們在FreeBSD上使用的與伺服器設定相關的全域性設定。
server.username = "www" server.groupname = "www" server.pid-file = "/var/run/lighttpd.pid" server.event-handler = "freebsd-kqueue" server.stat-cache-engine = "disable" server.max-write-idle = 720 server.tag = "lighttpd" server.document-root = "/usr/local/www/default/" server.error-handler-404 = "/404.html" accesslog.filename = "/usr/local/www/logs/lighttpd.access.log" server.errorlog = "/usr/local/www/logs/lighttpd.error.log" server.dir-listing = "disable" |
一些適用於Lighttpd服務的所有網站的全域性設定。
index-file.names = ("index.php", "index.html", "index.htm") url.access-deny = ("~", ".inc", ".sh", "sql", ".htaccess") static-file.exclude-extensions = (".php", ".pl", ".fcgi") |
讓我們加密的別名。
alias.url += ("/.well-known/acme-challenge/" => "/usr/local/www/acme/") |
為某些檔案型別啟用壓縮。
compress.cache-dir = "/tmp/lighttpdcompress/" compress.filetype = ("text/plain", "text/css", "text/xml", "text/javascript") |
需要身份驗證時,您可以指定如下。支援不同的後端。
auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "/usr/local/etc/lighttpd/htpasswd" |
某些檔案型別的常規Expire和Cache-Control標頭。
$HTTP["url"] =~ "\.(js|css|png|jpg|jpeg|gif|ico)$" { expire.url = ( "" => "access plus 1 months" ) } |
當您執行Wordpress網站時,您可能想要拒絕訪問某些網址。
$HTTP["url"] =~ "/(?:uploads|files|wp-content|wp-includes).*\.(php|phps|txt|md|exe)$" { url.access-deny = ("") } $HTTP["url"] =~ "/(wp-config|xmlrpc)\.php$" { url.access-deny = ("") } |
定義需要身份驗證的主機和URL。
$HTTP["host"] =~ "www1.example.com" { auth.require = ( "/admin/" => ( "method" => "basic", "realm" => "Restricted", "require" => "valid-user" ) ) } |
將某些主機從http重定向到https。
$HTTP["host"] =~ "(www\.)?example.com" { url.redirect = ("^/(.*)" => "https://www.example.com/$1") } |
有一個可用的模組可以幫助為虛擬主機分配正確的server.document-root。這可以使用mod_evhost完成,我們使用以下模式:
$HTTP["host"] =~ "^(www.)?[^.]+\.[^.]+$" { evhost.path-pattern = "/usr/local/www/www.%2.%1/" } |
為了能夠使用Wordpress的漂亮網址,您可以使用以下mod_rewrite規則。
url.rewrite = ( "^/(.*)\.(.+)$" => "$0", "^/(.+)/?$" => "/index.php/$1" ) |
當您使用PHP-FPM時,最後一塊拼圖可以使用以下配置。
fastcgi.server = ( ".php" => ( "localhost" => ( "host" => "127.0.0.1", "port" => 9000 ) ) ) |
完整的配置可以在我們的Git儲存庫中找到
相關文章
- nginx配置相關Nginx
- ASM的資料庫遷移回到DISK上ASM資料庫
- discuz資料庫遷移,改密碼後,相關配置檔案修改資料庫密碼
- mac下安裝nginx及相關配置MacNginx
- nginx連結jsp的相關配置NginxJS
- nginx相關Nginx
- flutter 微信登入以及客服相關配置Flutter
- 跪求關於〖執行緒遷移〗的相關資料!執行緒
- apache lighttpd nginx 對比分析ApachehttpdNginx
- 從 Nginx 遷移到 Envoy ProxyNginx
- 從關聯式資料庫向NoSQL遷移資料庫SQL
- Nginx 相關介紹Nginx
- Nginx教程以及配置keepalivedNginx
- ZT:TOAD 配置遷移
- 申請免費https證書及nginx相關配置HTTPNginx
- 簡單安裝配置lighttpdhttpd
- nginx伺服器搭建以及配置Nginx伺服器
- mac 安裝jdk/maven/tomcat 以及eclipse相關配置MacJDKMavenTomcatEclipse
- nginx與lighttpd效能簡單對比薦Nginxhttpd
- Lock鎖相關以及AQSAQS
- Git 相關配置Git
- JDBC 相關配置JDBC
- Linux 、docker 、nginx 相關命令LinuxDockerNginx
- iOS CoreData的簡單操作以及版本遷移iOS
- 磁碟相關概念以及知識
- JQuery 拖拽以及相關外掛jQuery
- 從Sql Server遷移資料到OracleSQLServerOracle
- spring相關配置Spring
- 解決mysql8.0.13dm7資料遷移相關問題undefinedMySqlUndefined
- 用RMAN遷移檔案到ASM或從ASM遷出ASM
- [高翔]關於卷遷移的整理
- SpringCloud簡介以及相關元件SpringGCCloud元件
- AllowOverride以及Options相關指令(轉)IDE
- Jenkins從Ubuntu遷移至AlmaLinux問題及相關解決記錄JenkinsUbuntuLinux
- mysqldump從mysql遷移資料到OceanBaseMySql
- ubuntu中Django相關配置UbuntuDjango
- php-fpm相關配置PHP
- vue-router相關配置Vue