{"id":6225,"date":"2026-09-18T23:59:28","date_gmt":"2026-09-18T14:59:28","guid":{"rendered":"https:\/\/eternalsphere.net\/echoes\/?p=6225"},"modified":"2026-09-19T21:26:13","modified_gmt":"2026-09-19T12:26:13","slug":"1zbra92g1aa0miz","status":"publish","type":"post","link":"https:\/\/blog.eternalsphere.net\/index.php\/2026\/09\/18\/1zbra92g1aa0miz\/","title":{"rendered":"\u4ece \/nextcloud\/ \u8fc1\u79fb\u5230\u72ec\u7acb\u5b50\u57df\u540d\uff1a\u4e00\u6b21\u5b8c\u6574\u7684 Nextcloud URL \u67b6\u6784\u91cd\u6784"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5f88\u591a\u65e9\u671f\u90e8\u7f72\u7684 Nextcloud \u90fd\u91c7\u7528\u5b50\u76ee\u5f55\u6a21\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;MAIN_DOMAIN&gt;\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u90e8\u7f72\u65b9\u5f0f\u7b80\u5355\uff0c\u800c\u4e14\u53ef\u4ee5\u548c\u5176\u4ed6\u670d\u52a1\u5171\u7528\u540c\u4e00\u4e2a\u4e3b\u57df\u540d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u968f\u7740 Nextcloud \u548c\u73b0\u4ee3\u6d4f\u89c8\u5668\u5b89\u5168\u673a\u5236\u4e0d\u65ad\u6f14\u8fdb\uff0c\u5b50\u76ee\u5f55\u67b6\u6784\u4f1a\u9010\u6e10\u66b4\u9732\u4e00\u4e9b\u9650\u5236\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6b21\u8fc1\u79fb\u6700\u7ec8\u628a\u6b63\u5f0f\u5730\u5740\u4ece\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;MAIN_DOMAIN&gt;\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u72ec\u7acb\u5b50\u57df\u540d\u6839\u8def\u5f84\u90e8\u7f72\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6574\u4e2a\u8fc7\u7a0b\u6d89\u53ca\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DNS\nTLS\nNginx\nApache\nNextcloud\nCookie\nWebDAV\nCalDAV\nCardDAV\n.well-known\n\u5ba2\u6237\u7aef\n\u517c\u5bb9\u8df3\u8f6c\nSecurity Scan<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e76\u4e0d\u662f\u7b80\u5355\u5730\u4fee\u6539\u4e00\u4e2a\u57df\u540d\u5b57\u7b26\u4e32\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u4e3a\u4ec0\u4e48\u8981\u4ece\u5b50\u76ee\u5f55\u8fc1\u79fb\u5230\u5b50\u57df\u540d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u76f4\u63a5\u7684\u539f\u56e0\u4e4b\u4e00\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host- Cookie<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u73b0\u4ee3\u6d4f\u89c8\u5668\u652f\u6301\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cookie \u524d\u7f00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u8981\u6c42\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Secure\nPath=\/\n\u4e0d\u80fd\u8bbe\u7f6e Domain<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u5982\u679c Nextcloud \u957f\u671f\u8fd0\u884c\u5728\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8def\u5f84\u4e0b\uff0c\u5c31\u5f88\u96be\u5b8c\u5168\u6ee1\u8db3\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Path=\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e00\u8981\u6c42\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u5168\u626b\u63cf\u56e0\u6b64\u4e00\u76f4\u5b58\u5728\u4e00\u4e2a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-Prefix<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5173\u63d0\u793a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u610f\u5473\u7740\u5373\u4f7f HTTPS\u3001HSTS\u3001Content-Security-Policy \u7b49\u5176\u4ed6\u914d\u7f6e\u5168\u90e8\u6b63\u5e38\uff0c\u5b50\u8def\u5f84\u672c\u8eab\u4ecd\u7136\u4f1a\u9650\u5236\u90e8\u5206 Cookie Hardening\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u6700\u7ec8\u51b3\u5b9a\u628a Nextcloud \u653e\u5230\u72ec\u7acb\u5b50\u57df\u540d\u6839\u76ee\u5f55\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001DNS\uff1a\u5148\u521b\u5efa\u65b0\u7684\u6b63\u5f0f\u5165\u53e3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u9996\u5148\u521b\u5efa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;CLOUD_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u5e94 DNS A \u8bb0\u5f55\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;CLOUD_DOMAIN&gt; \u2192 &lt;PUBLIC_IP&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">TTL \u91c7\u7528\u666e\u901a\u503c\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>3600<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u771f\u6b63\u4fee\u6539 Web Server \u4e4b\u524d\uff0c\u5148\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DNS \u5df2\u7ecf\u80fd\u591f\u6b63\u786e\u89e3\u6790<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u540e\u7eed TLS \u548c\u53cd\u5411\u4ee3\u7406\u624d\u80fd\u6b63\u5e38\u9a8c\u8bc1\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001TLS\uff1a\u628a\u65b0\u57df\u540d\u52a0\u5165\u73b0\u6709\u591a\u57df\u540d\u8bc1\u4e66<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u7cfb\u7edf\u4f7f\u7528\u4e00\u5f20\u5305\u542b\u591a\u4e2a\u670d\u52a1\u57df\u540d\u7684\u8bc1\u4e66\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u6ca1\u6709\u5355\u72ec\u521b\u5efa\u4e00\u5957\u8bc1\u4e66\uff0c\u800c\u662f\u628a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;CLOUD_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u52a0\u5165\u73b0\u6709 SAN \u5217\u8868\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Certbot \u547d\u4ee4\u5f62\u5f0f\u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot certonly --standalone \\\n  -d &lt;MAIN_DOMAIN&gt; \\\n  -d &lt;SERVICE_1_DOMAIN&gt; \\\n  -d &lt;SERVICE_2_DOMAIN&gt; \\\n  -d &lt;CLOUD_DOMAIN&gt; \\\n  --agree-tos \\\n  --email &lt;ADMIN_EMAIL&gt; \\\n  --cert-name &lt;CERT_NAME&gt; \\\n  --expand<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bc1\u4e66\u6210\u529f\u7b7e\u53d1\u540e\uff0c\u4e0d\u80fd\u53ea\u770b Certbot \u8f93\u51fa\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u9700\u8981\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Certbot live \u76ee\u5f55\u4e2d\u7684\u8bc1\u4e66<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u548c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx \u5b9e\u9645\u52a0\u8f7d\u7684\u8bc1\u4e66<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u662f\u5426\u5df2\u7ecf\u662f\u540c\u4e00\u4e2a\u65b0\u8bc1\u4e66\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Serial \u4e00\u81f4\nSAN \u4e2d\u5305\u542b &lt;CLOUD_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u53cd\u5411\u4ee3\u7406\u4e3b\u673a\u4e0e\u5e94\u7528\u4e3b\u673a\u4fdd\u6301\u804c\u8d23\u5206\u79bb<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6574\u4e2a\u67b6\u6784\u4e2d\u5b58\u5728\u4e24\u4e2a\u89d2\u8272\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u7aef\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;REVERSE_PROXY_HOST&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nginx\nCertbot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u540e\u7aef\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;NEXTCLOUD_HOST&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Apache\nPHP-FPM\nNextcloud\nDatabase<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e24\u4e2a\u89d2\u8272\u5728\u8fc1\u79fb\u4e2d\u5fc5\u987b\u4e25\u683c\u533a\u5206\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65b0\u57df\u540d\u9996\u5148\u5728\u53cd\u5411\u4ee3\u7406\u4e3b\u673a\u5efa\u7acb\u72ec\u7acb Nginx Server Block\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u6ca1\u6709\u628a\u65b0\u57df\u540d\u6c38\u4e45\u585e\u8fdb\u65e7 Server Block<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u5f00\u59cb\u53ef\u4ee5\u4e34\u65f6\u8ba9\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server_name &lt;MAIN_DOMAIN&gt; &lt;CLOUD_DOMAIN&gt;;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5171\u540c\u547d\u4e2d\u540c\u4e00\u4e2a Server Block\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u6700\u7ec8\u6ca1\u6709\u4fdd\u7559\u8fd9\u79cd\u7ed3\u6784\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u662f\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;CLOUD_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u7acb\u72ec\u7acb\u914d\u7f6e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f62\u5f0f\u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 443 ssl http2;\n    server_name &lt;CLOUD_DOMAIN&gt;;\n\n    client_max_body_size 1G;\n\n    access_log \/var\/log\/nginx\/cloud.access.log;\n    error_log  \/var\/log\/nginx\/cloud.error.log;\n\n    ssl_certificate     &lt;FULLCHAIN_PATH&gt;;\n    ssl_certificate_key &lt;PRIVATE_KEY_PATH&gt;;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n\n    location \/ {\n        proxy_pass http:\/\/&lt;NEXTCLOUD_LAN_IP&gt;;\n\n        proxy_http_version 1.1;\n\n        proxy_hide_header Upgrade;\n        proxy_hide_header Connection;\n\n        proxy_set_header Host              $http_host;\n        proxy_set_header X-Real-IP         $remote_addr;\n        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto https;\n        proxy_set_header X-Forwarded-Host  $http_host;\n        proxy_set_header X-Forwarded-Port  443;\n        proxy_set_header X-Nginx-Proxy     true;\n\n        proxy_redirect off;\n\n        proxy_connect_timeout 3600s;\n        proxy_send_timeout    3600s;\n        proxy_read_timeout    3600s;\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u7ed3\u6784\u548c\u5176\u4ed6\u72ec\u7acb\u670d\u52a1\u4fdd\u6301\u4e00\u81f4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u907f\u514d\u4ee5\u540e\u7ef4\u62a4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4e3b\u57df\u540d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u65f6\u610f\u5916\u5f71\u54cd\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Nextcloud \u5b50\u57df\u540d<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u6ca1\u6709\u989d\u5916\u8986\u76d6 Nextcloud \u81ea\u5df1\u7684 Referrer-Policy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e7\u4e3b\u57df\u540d Nginx \u914d\u7f6e\u4e2d\u66fe\u7ecf\u5b58\u5728\u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_header Referrer-Policy strict-origin-when-cross-origin always;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u65b0\u7684 Nextcloud Server Block \u6ca1\u6709\u7ee7\u7eed\u52a0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u56e0\u662f Nextcloud \u81ea\u5df1\u5df2\u7ecf\u53d1\u9001\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Referrer-Policy: no-referrer<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c Nginx \u518d\u52a0\u4e00\u5c42\uff0c\u5c31\u53ef\u80fd\u4ea7\u751f\u91cd\u590d Header\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u8fd9\u91cc\u9009\u62e9\u8ba9 Nextcloud \u81ea\u5df1\u63a7\u5236\u5e94\u7528\u7ea7 Security Header\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001Apache \u4ece Alias \u67b6\u6784\u8f6c\u4e3a\u72ec\u7acb VirtualHost<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u540e\u7aef\u6700\u521d\u91c7\u7528\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Alias \/nextcloud \"&lt;NEXTCLOUD_ROOT&gt;\/\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u8bf4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#047;&#047;&lt;BACKEND&gt;\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u624d\u5bf9\u5e94 Nextcloud\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u65f6\uff0c\u5728\u539f\u6709 Apache \u914d\u7f6e\u57fa\u7840\u4e0a\u589e\u52a0\u72ec\u7acb VirtualHost\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;\n    ServerName &lt;CLOUD_DOMAIN&gt;\n    DocumentRoot &lt;NEXTCLOUD_ROOT&gt;\n\n    SetEnvIf X-Forwarded-Proto https HTTPS=on\n\n    &lt;Directory &lt;NEXTCLOUD_ROOT&gt;\/&gt;\n        Options +FollowSymlinks\n        AllowOverride All\n        Require all granted\n    &lt;\/Directory&gt;\n\n    ErrorLog &lt;APACHE_CLOUD_ERROR_LOG&gt;\n    CustomLog &lt;APACHE_CLOUD_ACCESS_LOG&gt; combined\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u968f\u540e\u6267\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl configtest<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Syntax OK<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u901a\u8fc7\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apache2ctl -S<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u786e\u8ba4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;CLOUD_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5df2\u7ecf\u4f5c\u4e3a\u72ec\u7acb NameVirtualHost \u751f\u6548\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001Nextcloud \u589e\u52a0\u65b0 Trusted Domain<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nextcloud \u81ea\u5df1\u4e5f\u5fc5\u987b\u5141\u8bb8\u65b0\u7684 Host\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>trusted_domains:\n  &lt;BACKEND_LAN_IP&gt;\n  &lt;MAIN_DOMAIN&gt;\n  &lt;CLOUD_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u6ca1\u6709\u7acb\u5373\u5220\u9664\u65e7\u57df\u540d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u65e7\u5730\u5740\u4ecd\u7136\u9700\u8981\u4fdd\u7559\u4e00\u6bb5\u65f6\u95f4\u4f5c\u4e3a\u517c\u5bb9\u5165\u53e3\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001Nextcloud \u6b63\u5f0f Canonical URL \u6539\u4e3a\u65b0\u57df\u540d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u968f\u540e\u66f4\u65b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -E -u &lt;WEB_USER&gt; php occ \\\nconfig:system:set overwrite.cli.url \\\n--value='https:\/\/&lt;CLOUD_DOMAIN&gt;\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u8bbe\u7f6e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -E -u &lt;WEB_USER&gt; php occ \\\nconfig:system:set htaccess.RewriteBase \\\n--value='\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -E -u &lt;WEB_USER&gt; php occ maintenance:update:htaccess<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>overwrite.cli.url = https:\/\/&lt;CLOUD_DOMAIN&gt;\/\nhtaccess.RewriteBase = \/<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u3001\u6ca1\u6709\u8bbe\u7f6e overwritehost \/ overwriteprotocol \/ overwritewebroot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6b21\u8fc1\u79fb\u5e76\u6ca1\u6709\u989d\u5916\u8bbe\u7f6e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>overwritehost\noverwriteprotocol\noverwritewebroot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u56e0\u662f\u524d\u7aef Nginx \u5df2\u7ecf\u6b63\u786e\u63d0\u4f9b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Host\nX-Forwarded-Proto\nX-Forwarded-Host\nX-Forwarded-Port<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nextcloud \u53ef\u4ee5\u6b63\u786e\u8bc6\u522b\u771f\u5b9e\u8bf7\u6c42\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u53cd\u5411\u4ee3\u7406\u672c\u8eab\u5df2\u7ecf\u914d\u7f6e\u6b63\u786e\uff0c\u518d\u5f3a\u5236\u5199\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>overwritehost<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53cd\u800c\u4f1a\u589e\u52a0\u4ee5\u540e\u914d\u7f6e\u590d\u6742\u5ea6\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e00\u3001<code>.well-known<\/code> \u5168\u90e8\u8fc1\u79fb\u5230\u65b0\u5730\u5740<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u539f\u6709\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CalDAV\nCardDAV\nWebFinger\nNodeInfo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u9700\u8981\u540c\u6b65\u8c03\u6574\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apache \u4e2d\u6700\u7ec8\u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Redirect 301 \/.well-known\/carddav \\\nhttps:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/remote.php\/dav\n\nRedirect 301 \/.well-known\/caldav \\\nhttps:\/\/&lt;CLOUD_DOMAIN&gt;\/remote.php\/dav\n\nRedirect 301 \/.well-known\/webfinger \\\nhttps:\/\/&lt;CLOUD_DOMAIN&gt;\/index.php\/.well-known\/webfinger\n\nRedirect 301 \/.well-known\/nodeinfo \\\nhttps:\/\/&lt;CLOUD_DOMAIN&gt;\/index.php\/.well-known\/nodeinfo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e4b\u540e\u4ece\u5916\u90e8\u9a8c\u8bc1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/.well-known\/carddav\n\u2192 301\n\u2192 https:\/\/&lt;CLOUD_DOMAIN&gt;\/remote.php\/dav<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u4ed6\u51e0\u4e2a\u5165\u53e3\u4e5f\u5f97\u5230\u6b63\u786e\u8df3\u8f6c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e8c\u3001\u65e7 Alias \u6700\u7ec8\u4ece\u540e\u7aef\u5f7b\u5e95\u5220\u9664<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u521d\u671f\uff0c\u4e3a\u4e86\u907f\u514d\u4e00\u6b21\u53d8\u5316\u8fc7\u591a\uff0c\u65e7\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Alias \/nextcloud \"&lt;NEXTCLOUD_ROOT&gt;\/\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ecd\u7136\u6682\u65f6\u5b58\u5728\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u65b0\u57df\u540d\u7ecf\u8fc7\u5b8c\u6574\u9a8c\u8bc1\u4e4b\u540e\uff0c\u8fd9\u6761 Alias \u88ab\u5220\u9664\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u540e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e94\u8be5\u76f4\u63a5\u8fd4\u56de\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>404<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e00\u6b65\u5f88\u91cd\u8981\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u610f\u5473\u7740\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65b0\u57df\u540d\u53ea\u6709\u4e00\u4e2a\u6b63\u5f0f\u6839\u8def\u5f84<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e0d\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\n\u548c\n\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e24\u5957\u5165\u53e3\u540c\u65f6\u5b58\u5728\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e09\u3001\u65e7\u516c\u7f51\u5730\u5740\u6ca1\u6709\u7acb\u5373\u5220\u9664\uff0c\u800c\u662f\u7531 Nginx \u4fdd\u7559 301<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u867d\u7136\u540e\u7aef\u5df2\u7ecf\u5220\u9664\u65e7 Alias\uff0c\u4f46\u524d\u7aef\u53cd\u5411\u4ee3\u7406\u4ecd\u7136\u4fdd\u7559\u517c\u5bb9\u8df3\u8f6c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;MAIN_DOMAIN&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u5e94 Server Block \u4e2d\u52a0\u5165\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location = \/nextcloud {\n    return 301 https:\/\/&lt;CLOUD_DOMAIN&gt;\/;\n}\n\nlocation ^~ \/nextcloud\/ {\n    rewrite ^\/nextcloud\/(.*)$ \\\n        https:\/\/&lt;CLOUD_DOMAIN&gt;\/$1 permanent;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;MAIN_DOMAIN&gt;\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f1a\u53d8\u6210\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>301\nhttps:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;MAIN_DOMAIN&gt;\/nextcloud\/status.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5219\u53d8\u6210\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>301\nhttps:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/status.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u4fdd\u7559\u540e\u7eed\u8def\u5f84\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u56db\u3001\u4e3a\u4ec0\u4e48\u517c\u5bb9\u8df3\u8f6c\u53ea\u653e\u5728\u53cd\u5411\u4ee3\u7406<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u517c\u5bb9\u903b\u8f91\u6ca1\u6709\u7ee7\u7eed\u4fdd\u7559\u5728\u540e\u7aef Apache\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u6709\u610f\u8bbe\u8ba1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u7ed3\u6784\u53d8\u6210\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u516c\u7f51\u65e7 URL\n    \u2193\n\u524d\u7aef Nginx 301\n    \u2193\n\u65b0 URL\n    \u2193\n\u540e\u7aef Apache\n    \u2193\nNextcloud<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e0d\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u524d\u7aef\u8df3\u4e00\u6b21\n\u540e\u7aef\u518d\u5224\u65ad\u4e00\u6b21\u65e7\u8def\u5f84\nNextcloud \u518d\u5904\u7406\u4e00\u6b21<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u804c\u8d23\u66f4\u6e05\u6670\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e94\u3001\u5ba2\u6237\u7aef\u8fc1\u79fb\u671f\u95f4\u51fa\u73b0 Cookie \u548c Session \u9519\u8bef<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b63\u5f0f\u5207\u6362\u540e\uff0c\u9700\u8981\u5728\u5f88\u591a\u4f4d\u7f6e\u66f4\u65b0\u5730\u5740\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6d4f\u89c8\u5668\u4e66\u7b7e\n\u5bc6\u7801\u7ba1\u7406\u5668\n\u684c\u9762\u5ba2\u6237\u7aef\n\u624b\u673a\u5ba2\u6237\u7aef\nWebDAV\nCalDAV\nCardDAV\n\u81ea\u52a8\u5316\u811a\u672c\n\u65e7\u767b\u5f55 Session<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u8fc1\u79fb\u540e\u7684\u77ed\u65f6\u95f4\u5185\uff0cNextcloud \u65e5\u5fd7\u51fa\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request does not pass strict cookie check<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6765\u81ea\u591a\u4e2a\u684c\u9762\u5ba2\u6237\u7aef\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u51fa\u73b0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Could not find the session token to renew<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f02\u5e38\u7c7b\u578b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OC\\Authentication\\Exceptions\\ExpiredTokenException<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3b\u8981\u53d1\u751f\u5728\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Tasks\nCalendar\n\/\nlogin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u51e0\u4e2a\u8bf7\u6c42\u4e0a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e9b\u9519\u8bef\u9ad8\u5ea6\u96c6\u4e2d\u5728\u5f88\u77ed\u65f6\u95f4\u7a97\u53e3\u5185\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u968f\u7740\u6d4f\u89c8\u5668\u91cd\u65b0\u767b\u5f55\u3001\u5ba2\u6237\u7aef\u670d\u52a1\u5668\u5730\u5740\u66f4\u65b0\uff0c\u8fd9\u4e9b\u9519\u8bef\u505c\u6b62\u7ee7\u7eed\u4ea7\u751f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u6700\u7ec8\u786e\u8ba4\u5b83\u4eec\u5c5e\u4e8e\u5ba2\u6237\u7aef\u8fc1\u79fb\u9636\u6bb5\u7684\u65e7 Cookie \/ Session \u6b8b\u7559\uff0c\u800c\u4e0d\u662f\u670d\u52a1\u5668\u914d\u7f6e\u9519\u8bef\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u516d\u3001Cookie \u53d8\u5316\u662f\u8fd9\u6b21\u67b6\u6784\u8fc1\u79fb\u6700\u5173\u952e\u7684\u9a8c\u8bc1\u4e4b\u4e00<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u65b0\u57df\u540d\u6839\u8def\u5f84\u90e8\u7f72\u751f\u6548\u540e\uff0c\u8fd4\u56de\u7684 Cookie \u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-nc_sameSiteCookielax=true\nPath=\/\nSecure\nHttpOnly<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u53ca\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-nc_sameSiteCookiestrict=true\nPath=\/\nSecure\nHttpOnly<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u8bf4\u660e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cookie \u524d\u7f00\u5df2\u7ecf\u771f\u6b63\u6ee1\u8db3\u89c4\u8303\u8981\u6c42\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u524d\u56e0\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b50\u8def\u5f84\u7ed3\u6784\u65e0\u6cd5\u5b8c\u5168\u6ee1\u8db3\u7684\u6761\u4ef6\uff0c\u73b0\u5728\u5df2\u7ecf\u6d88\u5931\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e03\u3001Security Scan \u6700\u7ec8\u4ece A \u53d8\u4e3a A+<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e7\u5730\u5740\u8fdb\u884c Nextcloud Security Scan \u65f6\uff0c\u6574\u4f53\u5df2\u7ecf\u8fbe\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u4ecd\u5b58\u5728\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-Prefix<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ea2\u8272\u63d0\u793a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u540e\u66fe\u7ecf\u4e00\u5ea6\u9519\u8bef\u5730\u626b\u63cf\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u4ecd\u7136\u770b\u5230\u65e7\u95ee\u9898\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540e\u6765\u6539\u4e3a\u771f\u6b63\u7684\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u91cd\u65b0\u626b\u63cf\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u7ed3\u679c\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A+<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u4e3b\u8981 Hardening \u9879\u5168\u90e8\u7eff\u8272\uff0c\u5305\u62ec\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__Host-Prefix<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e5f\u4ece\u5916\u90e8\u9a8c\u8bc1\u4e86\u65b0\u7684\u6839\u57df\u540d\u67b6\u6784\u5df2\u7ecf\u6b63\u786e\u751f\u6548\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u516b\u3001\u6700\u7ec8\u67b6\u6784<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fc1\u79fb\u7ed3\u675f\u540e\u7684\u7ed3\u6784\u53ef\u4ee5\u6982\u62ec\u4e3a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;&lt;CLOUD_DOMAIN&gt;\/\n        \u2193\n\u6b63\u5f0f Nextcloud\n\nhttps:\/\/&lt;CLOUD_DOMAIN&gt;\/nextcloud\/\n        \u2193\n404\n\nhttps:\/\/&lt;MAIN_DOMAIN&gt;\/nextcloud\/\n        \u2193\n301\n        \u2193\nhttps:\/\/&lt;CLOUD_DOMAIN&gt;\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u5c31\u662f\u8bf4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65b0\u57df\u540d\u6839\u8def\u5f84 = \u552f\u4e00\u6b63\u5f0f\u5165\u53e3\n\u65e7\u57df\u540d\u5b50\u8def\u5f84 = \u4e34\u65f6\u517c\u5bb9\u5165\u53e3\n\u65b0\u57df\u540d\u65e7\u5b50\u8def\u5f84 = \u4e0d\u5b58\u5728<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u4e00\u4e2a\u975e\u5e38\u5e72\u51c0\u7684\u72b6\u6001\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u4e5d\u3001\u65e7\u517c\u5bb9\u5730\u5740\u4e0d\u4f1a\u6c38\u4e45\u5b58\u5728<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">301 \u517c\u5bb9\u8df3\u8f6c\u53ea\u662f\u8fc1\u79fb\u671f\u63aa\u65bd\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9700\u8981\u7ed9\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6d4f\u89c8\u5668\nDesktop Client\nMobile Client\nWebDAV\nCalDAV\nCardDAV\n\u5386\u53f2\u6587\u6863\n\u81ea\u52a8\u5316\u811a\u672c<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7559\u51fa\u66f4\u65b0\u65f6\u95f4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b49\u8fc1\u79fb\u7a97\u53e3\u7ed3\u675f\u4e4b\u540e\uff0c\u518d\u4ece\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;REVERSE_PROXY_HOST&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5220\u9664\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location = \/nextcloud<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u548c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location ^~ \/nextcloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e24\u6bb5\u89c4\u5219\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5230\u90a3\u65f6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65e7\u516c\u7f51\u5730\u5740<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u624d\u7b97\u771f\u6b63\u9000\u5f79\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u5341\u3001\u8fd9\u4e0d\u662f\u4e00\u6b21\u7b80\u5355\u7684\u201c\u6362\u57df\u540d\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6574\u4e2a\u8fc7\u7a0b\u5b9e\u9645\u4e0a\u5b8c\u6210\u4e86\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5b50\u8def\u5f84\u90e8\u7f72\n        \u2193\n\u72ec\u7acb\u5b50\u57df\u540d\u6839\u8def\u5f84\u90e8\u7f72\n\n\u65e7 Cookie \u7ed3\u6784\n        \u2193\n__Host- Cookie\n\nApache Alias\n        \u2193\n\u72ec\u7acb VirtualHost\n\n\u591a\u5165\u53e3\n        \u2193\n\u5355\u4e00 Canonical URL\n\n\u540e\u7aef\u517c\u5bb9\u903b\u8f91\n        \u2193\n\u524d\u7aef\u7edf\u4e00 301\n\nSecurity Scan A\n        \u2193\nSecurity Scan A+<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u6b64\u5b83\u66f4\u51c6\u786e\u7684\u63cf\u8ff0\u5e94\u8be5\u662f\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u4e00\u6b21 Nextcloud URL\u3001\u53cd\u5411\u4ee3\u7406\u3001\u5b89\u5168 Cookie \u548c Web \u670d\u52a1\u67b6\u6784\u7684\u6574\u4f53\u91cd\u6784\u3002<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u800c\u4e0d\u4ec5\u4ec5\u662f\u201c\u628a\u5730\u5740\u6362\u4e86\u4e00\u4e2a\u57df\u540d\u201d\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5f88\u591a\u65e9\u671f\u90e8\u7f72\u7684 Nextcloud \u90fd\u91c7\u7528\u5b50\u76ee\u5f55\u6a21\u5f0f\u3002 \u4f8b\u5982\uff1a \u8fd9\u79cd\u90e8\u7f72\u65b9\u5f0f\u7b80\u5355\uff0c\u800c\u4e14\u53ef\u4ee5\u548c\u5176\u4ed6\u670d\u52a1\u5171\u7528\u540c\u4e00\u4e2a\u4e3b\u57df\u540d\u3002 \u4f46\u968f\u7740 Nextcloud \u548c\u73b0\u4ee3\u6d4f\u89c8\u5668\u5b89\u5168\u673a\u5236\u4e0d\u65ad\u6f14\u8fdb\uff0c\u5b50\u76ee\u5f55\u67b6\u6784\u4f1a\u9010\u6e10\u66b4\u9732\u4e00\u4e9b\u9650\u5236\u3002 \u8fd9\u6b21\u8fc1\u79fb\u6700\u7ec8\u628a\u6b63\u5f0f\u5730\u5740\u4ece\uff1a \u8fc1\u79fb\u4e3a\uff1a \u4e5f\u5c31\u662f\u72ec\u7acb\u5b50\u57df\u540d\u6839\u8def\u5f84\u90e8\u7f72\u3002 \u6574\u4e2a\u8fc7\u7a0b\u6d89\u53ca\uff1a \u5e76\u4e0d\u662f\u7b80\u5355\u5730\u4fee\u6539\u4e00\u4e2a\u57df\u540d\u5b57\u7b26\u4e32\u3002 \u4e00\u3001\u4e3a\u4ec0\u4e48\u8981\u4ece\u5b50\u76ee\u5f55\u8fc1\u79fb\u5230\u5b50\u57df\u540d \u6700\u76f4\u63a5\u7684\u539f\u56e0\u4e4b\u4e00\u662f\uff1a \u73b0\u4ee3\u6d4f\u89c8\u5668\u652f\u6301\uff1a Cookie \u524d\u7f00\u3002 \u5b83\u8981\u6c42\uff1a \u800c\u5982\u679c Nextcloud \u957f\u671f\u8fd0\u884c\u5728\uff1a \u8def\u5f84\u4e0b\uff0c\u5c31\u5f88\u96be\u5b8c\u5168\u6ee1\u8db3\uff1a \u8fd9\u4e00\u8981\u6c42\u3002 \u5b89\u5168\u626b\u63cf\u56e0\u6b64\u4e00\u76f4\u5b58\u5728\u4e00\u4e2a\uff1a \u76f8\u5173\u63d0\u793a\u3002 \u8fd9\u610f\u5473\u7740\u5373\u4f7f HTTPS\u3001HSTS\u3001Content-Security-Policy \u7b49\u5176\u4ed6\u914d\u7f6e\u5168\u90e8\u6b63\u5e38\uff0c\u5b50\u8def\u5f84\u672c\u8eab\u4ecd\u7136\u4f1a\u9650\u5236\u90e8\u5206 Cookie Hardening\u3002 \u56e0\u6b64\u6700\u7ec8\u51b3\u5b9a\u628a Nextcloud \u653e\u5230\u72ec\u7acb\u5b50\u57df\u540d\u6839\u76ee\u5f55\u3002 \u4e8c\u3001DNS\uff1a\u5148\u521b\u5efa\u65b0\u7684\u6b63\u5f0f\u5165\u53e3 \u9996\u5148\u521b\u5efa\uff1a \u5bf9\u5e94 DNS A \u8bb0\u5f55\uff1a TTL \u91c7\u7528\u666e\u901a\u503c\uff0c\u4f8b\u5982\uff1a \u5728\u771f\u6b63\u4fee\u6539 Web Server \u4e4b\u524d\uff0c\u5148\u786e\u8ba4\uff1a \u8fd9\u6837\u540e\u7eed TLS \u548c\u53cd\u5411\u4ee3\u7406\u624d\u80fd\u6b63\u5e38\u9a8c\u8bc1\u3002 \u4e09\u3001TLS\uff1a\u628a\u65b0\u57df\u540d\u52a0\u5165\u73b0\u6709\u591a\u57df\u540d\u8bc1\u4e66 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119],"tags":[],"class_list":["post-6225","post","type-post","status-publish","format-standard","hentry","category-pou9fnwy10bjp8h"],"_links":{"self":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts\/6225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/comments?post=6225"}],"version-history":[{"count":1,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts\/6225\/revisions"}],"predecessor-version":[{"id":6226,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/posts\/6225\/revisions\/6226"}],"wp:attachment":[{"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/media?parent=6225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/categories?post=6225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.eternalsphere.net\/index.php\/wp-json\/wp\/v2\/tags?post=6225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}