
geocn \u63d2\u4ef6\u7528\u9014\u5c31\u662f\u8bc6\u522b ip \u662f\u5426\u4e3a\u5927\u9646 ip\uff0c\u7136\u540e\u505a\u4e9b\u4ec0\u4e48\u4e8b\u3002
\n\u6570\u636e\u6e90\u6765\u81eaHackl0us/GeoIP2-CN
\n\u6784\u5efa\u65b9\u5f0f:
\nxcaddy build --with github.com/ysicing/caddy2-geocn\n\n\u4f7f\u7528\u65b9\u5f0f;
\n @geofilter {\n geocn {\n db_file \"./Country.mmdb\"\n }\n }\n \n file_server @geofilter {\n # \u5927\u9646 ip \n }\n file_server {\n # \u5927\u9646 ip \u975e\u5927\u9646 ip\n }\n\n\u6d4b\u8bd5:
\ndocker run -itd 80:80 ghcr.io/ysicing/caddy2-geocn:latest\n\n\u5e94\u7528\u5b9e\u4f8b \u6211\u7684\u535a\u5ba2, \u5177\u4f53\u535a\u5ba2\u914d\u7f6e\u53ef\u4ee5\u770bgithub
\n\u8bdd\u8bf4 caddy2 \u771f\u7684\u5f88\u96be\u7528\u76f8\u6bd4\u8f83 v1 \u7248\u672c, \u800c\u4e14\u63d2\u4ef6\u6587\u6863\u5c11\u7684\u53ef\u601c\u3002
\u4f7f\u7528 caddy \u7684\u539f\u56e0\u662f\u6709\u81ea\u52a8\u66f4\u65b0 https \u8bc1\u4e66\u3002
\n\u7f51\u7edc\u7ed3\u6784\u5f88\u7b80\u5355\uff0c\u524d\u9762\u6709\u4e00\u4e2a\u57df\u540d\uff0ccaddy \u53cd\u5411\u4ee3\u7406\u8f6c\u7ed9\u54cd\u5e94\u7a0b\u5e8f\u3002
\n\u5148\u662f\u4f7f\u7528\u4e03\u725b\uff0c\u7136\u540e\u53d1\u73b0\u534a\u5929\u8fc7\u4e0d\u4e86\u6821\u9a8c\uff0c\u4e00\u76f4\u5728\u90e8\u7f72\u4e2d\uff0c\u6211\u4eec\u4ee5\u4e3a\u662f\u4e03\u725b\u4e0d\u884c\u3002
\n\u52a0\u4e0a\u4e03\u725b\u7684\u81ea\u5b9a\u4e49\u914d\u7f6e\u9009\u9879\u5f88\u5c11\uff0c\u4e8e\u662f\u6362\u817e\u8baf\u4e91 CDN \u3002
\n\u7136\u540e\u53c8\u8bd5\uff0c\u53d1\u73b0\u8981\u4e48\u4e0d\u884c(403)\uff0c\u8981\u4e48\u91cd\u5b9a\u5411\u5230\u4e86\u670d\u52a1\u5668\u5185\u90e8\u57df\u540d(\u8fd9\u4e2a\u57df\u540d\u53ef\u4ee5\u76f4\u63a5 ping \u5230\u670d\u52a1\u5668 IP)\u3002
\n\u968f\u540e\uff0c\u6211\u4eec\u5173\u95ed\u4e86\u81ea\u52a8 https \u91cd\u5b9a\u5411\uff0c\u7ec8\u4e8e\u4e0d\u4f1a\u66b4\u9732\u5185\u90e8\u57df\u540d\u4e86\u3002
\n\u4f46\u73b0\u5728\u4f1a\u7a33\u5b9a\u5f97\u5230\u4e00\u4e2a 403 \u3002
\n\u628a\u56de\u6e90\u8bf7\u6c42\u65b9\u5f0f\u6539\u4e3a\u201c\u59cb\u7ec8\u4f7f\u7528 HTTP\u201d\uff0c\u5e76\u4e14\u5199\u4e86\u4e00\u4e2a\u5c0f\u670d\u52a1\u811a\u672c\u6d4b\u8bd5\u3002
\n\u53d1\u73b0\u4e86\u8fd9\u6837\u7684\u95ee\u9898\uff1a
\nCaddy \u83b7\u5f97\u4e86 CDN \u8f6c\u53d1\u6765\u7684\u8bf7\u6c42\u4e4b\u540e\uff0c\u6ca1\u6709\u8f6c\u53d1\u7ed9\u4e0a\u6e38\uff0c\u76f4\u63a5\u8fd4\u56de\u4e86 403
\n\u968f\u540e\u5c31\u662f apt install nginx\uff0c10 \u5206\u949f\u4e4b\u540e\u5c31\u6b63\u5e38\u5de5\u4f5c\u4e86\u3002
\n\u867d\u7136\u4e0d\u6392\u9664\u53ef\u80fd\u662f\u817e\u8baf\u4e91\u548c\u4e03\u725b\u7684\u95ee\u9898\uff0c\u4f46\u6211\u8fd8\u662f\u5bf9 caddy \u611f\u5230\u8d39\u89e3\uff0c\u5305\u62ec\u8981\u6c42\u914d\u7f6e\u9879\u7684\u987a\u5e8f\u8981\u6c42\u4e5f\u662f\uff0c\u8ba9\u4eba\u4e00\u5934\u96fe\u6c34\u7684\u914d\u7f6e\u9519\u8bef\u63d0\u793a\u4e5f\u662f\u3002
\n\u914d\u7f6e\uff1a
\nhttp://xxx.q2test.cn, https://xxx.q2test.cn {\n reverse_proxy localhost:3000\n}\n\n\u8bf7\u6c42\u5931\u8d25\uff0c\u8fd4\u56de 403\uff1a
\nMar 18 18:26:40 iZbp1a0zoyd681g7u3kpzsZ caddy[522704]: {\"level\":\"error\",\"ts\":1616063200.543761,\"logger\":\"http.log.access.log0\",\"msg\":\"handled request\",\"request\":{\"remote_addr\":\"220.194.88.217:21901\",\"proto\":\"HTTP/1.1\",\"method\":\"GET\",\"host\":\"xxx.q2test.cn\",\"uri\":\"/\",\"headers\":{\"Upgrade-Insecure-Requests\":[\"1\"],\"Accept\":[\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\"],\"X-Nws-Log-Uuid\":[\"18288152216455359445\"],\"X-Tencent-Ua\":[\"Qcloud\"],\"X-Forwarded-Proto\":[\"http\"],\"User-Agent\":[\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36\"],\"Accept-Language\":[\"zh-CN,zh;q=0.9\"],\"D541340abd8120abcb55ffb8fc48b3ce\":[\"tag\"],\"X-Forwarded-For\":[\"118.113.4.159\"],\"X-Daa-Tunnel\":[\"hop_count=1\"]}},\"common_log\":\"220.194.88.217 - - [18/Mar/2021:18:26:40 +0800] \\\"GET / HTTP/1.1\\\" 403 0\",\"duration\":0.000036437,\"size\":0,\"status\":403,\"resp_headers\":{\"Server\":[\"Caddy\"]}}\n\n\u4e0d\u901a\u8fc7 cdn \u8bf7\u6c42\u6210\u529f\uff1a
\nMar 18 18:26:59 iZbp1a0zoyd681g7u3kpzsZ caddy[522704]: {\"level\":\"info\",\"ts\":1616063219.6977851,\"logger\":\"http.log.access.log0\",\"msg\":\"handled request\",\"request\":{\"remote_addr\":\"117.113.2.139:57097\",\"proto\":\"HTTP/1.1\",\"method\":\"GET\",\"host\":\"xxx.q2test.cn\",\"uri\":\"/\",\"headers\":{\"Connection\":[\"keep-alive\"],\"Upgrade-Insecure-Requests\":[\"1\"],\"User-Agent\":[\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36\"],\"Accept-Language\":[\"zh-CN,zh;q=0.9\"],\"If-None-Match\":[\"\\\"e02aa1b106d5c7c6a98def2b13005d5b84fd8dc8\\\"\"],\"Cache-Control\":[\"max-age=0\"],\"Accept\":[\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\"],\"Accept-Encoding\":[\"gzip, deflate\"]}},\"common_log\":\"117.113.2.139 - - [18/Mar/2021:18:26:59 +0800] \\\"GET / HTTP/1.1\\\" 304 0\",\"duration\":0.001917656,\"size\":0,\"status\":304,\"resp_headers\":{\"Server\":[\"Caddy\",\"TornadoServer/6.1\"],\"Date\":[\"Thu, 18 Mar 2021 10:26:59 GMT\"],\"Etag\":[\"\\\"e02aa1b106d5c7c6a98def2b13005d5b84fd8dc8\\\"\"]}}\n\n", "date_published": "2021-03-18T11:17:57+00:00", "title": "Caddy \u5f88\u53ef\u80fd\u65e0\u6cd5\u548c cdn \u5171\u7528\uff0c\u6d6a\u8d39\u4e86\u4e24\u4e2a\u4eba\u4e00\u4e0b\u5348\u4e4b\u540e\u6362\u4e86 nginx \u82b1 5 \u5206\u949f\u641e\u597d\u4e86 (\u817e\u8baf\u4e03\u725b CDN \u76f8\u5173)", "id": "t/762951" }, { "author": { "url": "member/silvernoo", "name": "silvernoo", "avatar": "https://cdn.v2ex.com/avatar/2169/a2cc/21760_large.png?m=1773800022" }, "url": "t/676409", "date_modified": "2020-05-28T10:47:10+00:00", "content_html": "\u8981\u628a 127.0.0:8080/\u8f6c\u53d1\u5230 ip:port/app/\u4e0b\uff0c\u8c22\u8c22\u6307\u6559", "date_published": "2020-05-28T10:46:54+00:00", "title": "\u8bf7\u6559\u4e00\u4e2a caddy2 \u7684\u53cd\u4ee3\u89c4\u5219", "id": "t/676409" }, { "author": { "url": "member/skt041959", "name": "skt041959", "avatar": "https://cdn.v2ex.com/avatar/c626/eb33/109589_large.png?m=1584116410" }, "url": "t/672268", "date_modified": "2020-05-16T02:30:47+00:00", "content_html": "\u6bd4\u5982 127.0.0.1/e/ \u53ef\u4ee5\u8bbf\u95ee E:\\ , 127.0.0.1/d/ \u53ef\u4ee5\u8bbf\u95ee D:\\
\nstackoverflow \u4e0a Caddy \u7684\u95ee\u9898\u771f\u7684\u592a\u5c11\u4e86\uff0c\u5b8c\u5168\u4e0d\u6bd4 nginx
\u6211\u50cf\u8fd9\u6837\u5199\u597d\u50cf\u4e0d\u592a\u884c
\n \"apps\": {\n \"http\": {\n \"servers\": {\n \"static\": {\n \"idle_timeout\": 30000000000,\n \"listen\": [\n \":80\"\n ],\n \"max_header_bytes\": 10240,\n \"read_header_timeout\": 10000000000,\n \"routes\": [\n {\n \"handle\": [\n {\n \"browse\": {},\n \"handler\": \"file_server\",\n \"root\": \"e:\"\n }\n ],\n \"match\": [\n {\n \"path\": [\n \"/e/*\"\n ]\n }\n ]\n }\n ]\n }\n }\n }\n }\n\n", "date_published": "2020-05-16T02:29:35+00:00", "title": "Caddy file_server \u600e\u4e48\u6837\u914d\u7f6e\u591a\u4e2a\u76ee\u5f55\uff1f", "id": "t/672268" }, { "author": { "url": "member/Takuron", "name": "Takuron", "avatar": "https://cdn.v2ex.com/avatar/8959/ac62/461113_large.png?m=1720176228" }, "url": "t/653441", "date_modified": "2020-03-17T01:35:57+00:00", "content_html": "\u6700\u8fd1\u4e0a\u624b\u4e86 caddy\uff0c\u7684\u786e\u662f\u4f18\u5148\u4e3a\u4eba\u7c7b\u8bbe\u8ba1\u7684\u8f6f\u4ef6\u914d\u7f6e\u7b80\u5355\u5230\u5413\u4eba\uff0c\u4e0d\u8fc7\u53ef\u80fd\u6211\u8fd8\u6ca1\u5b8c\u5168\u638c\u63e1\u73b0\u5728\u5076\u5c14\u4f1a\u51fa\u73b0\u670d\u52a1\u5668\u505c\u6b62\u8fd0\u884c\u7684\u95ee\u9898\uff0c\u5916\u52a0\u57fa\u4e8e go \u7684\u786e\u7406\u8bba\u4e0a\u6709\u8fd0\u884c\u6548\u7387\u95ee\u9898\u3002\u4e0d\u77e5\u5176\u80fd\u4e0d\u80fd\u7a33\u5b9a\u627f\u62c5\u7c7b\u4f3c\u4e2a\u4eba\u535a\u5ba2\u8fd9\u79cd\u4efb\u52a1\uff0c\u5e0c\u671b\u7528\u8fc7\u7684 v \u53cb\u7ed9\u70b9\u610f\u89c1\u3002
\n", "date_published": "2020-03-17T01:13:37+00:00", "title": "caddy \u80fd\u7a33\u5b9a\u7528\u4e8e\u7b80\u5355\u7684\u751f\u4ea7\u73af\u5883\u4e2d\u5417", "id": "t/653441" }, { "author": { "url": "member/nfroot", "name": "nfroot", "avatar": "https://cdn.v2ex.com/avatar/18f2/7472/191501_large.png?m=1473702873" }, "url": "t/562247", "title": "\u4e00\u4e2a\u7b80\u6d01\u53c8\u5f3a\u5927\u7684 Caddy\uff0c\u96be\u7528\u8d77\u6765\u4e5f\u4f1a\u8ba9\u4eba\u65e0\u8bed", "id": "t/562247", "date_published": "2019-05-08T08:42:52+00:00", "content_html": "Caddy \u771f\u7684\u5f88\u4e0d\u9519\uff0c\u4e2a\u4eba\u7528\u592a\u65b9\u4fbf\u4e86\uff01\u8fd8\u6709\u5404\u79cd\u63d2\u4ef6\u62d3\u5c55\u771f\u662f\u68d2\uff01\u4e0b\u8f7d\u9875\u9762\u52fe\u9009\u63d2\u4ef6\u5c31\u80fd\u4e0b\u8f7d\uff0c\u771f\u65b9\u4fbf\uff01\u56fd\u5185\u6ca1\u5916\u7f51 IP\uff0c80 \u7aef\u53e3\u5c01\u4e86\uff0c\u6ca1\u5173\u7cfb\uff0c\u4e00\u5806 DNS \u63d2\u4ef6\uff0c\u53ef\u4ee5\u81ea\u52a8\u901a\u8fc7 dns \u6765\u9a8c\u8bc1\uff01\u975e\u5e38\u9002\u5408\u56fd\u60c5\u6709\u6728\u6709\uff01\uff08 80 \u7aef\u53e3\u88ab\u5c01\uff0c\u6216\u8005\u5e72\u8106\u6ca1\u6709\u5916\u7f51 IP\uff0c\u65e0\u6cd5\u81ea\u52a8\u8d70 http \u65b9\u5f0f\u901a\u8fc7 SSL \u8bc1\u4e66\u7684\u9a8c\u8bc1\uff0c\u6d41\u884c Windows \u670d\u52a1\u5668\uff09https://github.com/mholt/caddy
\n", "date_published": "2019-04-25T00:29:46+00:00", "title": "CaddyServer 1.0 \u5df2\u53d1\u5e03", "id": "t/558433" }, { "author": { "url": "member/blisdom", "name": "blisdom", "avatar": "https://cdn.v2ex.com/gravatar/cdafd3a1c13e844b4194f2d98978010a?s=73&d=retro" }, "url": "t/552683", "title": "caddy \u670d\u52a1\u5668\u8fd4\u56de\u4e00\u4e2a json", "id": "t/552683", "date_published": "2019-04-07T06:59:33+00:00", "content_html": "\u5982\u4f55\u914d\u7f6e url \u53ef\u4ee5\u8ba9 caddy \u76f4\u63a5\u8fd4\u56de\u4e00\u4e2a json \u7ed3\u6784" }, { "author": { "url": "member/caola", "name": "caola", "avatar": "https://cdn.v2ex.com/avatar/ff15/f2a3/79922_large.png?m=1735294903" }, "url": "t/302641", "title": "Caddy Server \u5df2\u652f\u6301 QUIC \u534f\u8bae\uff0c\u53c8\u53ef\u4ee5\u6298\u817e\u65b0\u6280\u672f\u4e86", "id": "t/302641", "date_published": "2016-08-30T03:54:28+00:00", "content_html": "Caddy Server \u5df2\u7ecf\u652f\u6301\u8c37\u6b4c\u57fa\u4e8e UDP \u7684 QUIC \u534f\u8bae\uff0c\u559c\u6b22\u6298\u817e\u65b0\u6280\u672f\u7684\u53f8\u673a\u4eec\uff0c\u53ef\u4ee5\u5f00\u8f66\u4e86\u2026\u2026" }, { "author": { "url": "member/hiroya", "name": "hiroya", "avatar": "https://cdn.v2ex.com/gravatar/7aaf8b5fd043f740455f0bad76dc5374?s=73&d=retro" }, "url": "t/292885", "date_modified": "2016-07-16T09:45:17+00:00", "content_html": "\u5c1d\u8bd5\u8fc7\u8fd9\u4e1c\u897f\u540e\u53d1\u73b0\u597d\u9ed1\u79d1\u6280\uff0c\u7f51\u4e0a\u76f8\u5173\u7684\u6587\u6863\u53c8\u6bd4\u8f83\u5c11\uff0c\u6240\u4ee5\u5199\u4e86\u4e2a Caddy Server \u7684\u7b80\u6613\u5165\u95e8\u624b\u518c\uff0c\u5982\u679c\u6709\u4ec0\u4e48\u7eb0\u6f0f\u4e0d\u8db3\uff0c\u8fd8\u8bf7\u5404\u4f4d\u83ca\u82e3\u6307\u51fa QwQ
\n\u535a\u6587\u5730\u5740 https://emiria.io/post/CaddyServer/
\n\u8bfa\uff0c\u5c31\u662f\u8fd9\u8d27 https://caddyserver.com\nOrz..
\n", "date_published": "2016-07-16T08:18:24+00:00", "title": "\u4e00\u4e2a Caddy Server \u7684\u7b80\u6613\u5165\u95e8\u624b\u518c\uff0c QwQ", "id": "t/292885" }, { "author": { "url": "member/Livid", "name": "Livid", "avatar": "https://cdn.v2ex.com/avatar/c4ca/4238/1_large.png?m=1776858751" }, "url": "t/268396", "date_modified": "2016-04-03T16:48:05+00:00", "content_html": "https://caddyserver.com/blog/is-caddy-free\r