{
  "version": "https://jsonfeed.org/version/1", 
  "title": "NGINX", 
  "description": "A HTTP and mail proxy server licensed under a 2-clause BSD-like license. By Igor Sysoev.", 
  "home_page_url": "https://www.v2ex.com/go/nginx", 
  "feed_url": "https://www.v2ex.com/feed/nginx.json", 
  "icon": "https://cdn.v2ex.com/navatar/9778/d5d2/82_large.png?m=1735545287", 
  "favicon": "https://cdn.v2ex.com/navatar/9778/d5d2/82_normal.png?m=1735545287", 
  "items": [
    {
      "author": {
        "url": "https://www.v2ex.com/member/cowiejulewbfwo", 
        "name": "cowiejulewbfwo", 
        "avatar": "https://cdn.v2ex.com/avatar/8471/6c1e/748921_large.png?m=1758266094"
      }, 
      "url": "https://www.v2ex.com/t/1175687", 
      "date_modified": "2025-11-28T10:49:31+00:00", 
      "content_html": "<h3>Docker Nginx (Host Mode) + Fail2Ban \u5b8c\u6574\u6307\u5357</h3>\n<p>\u672c\u6559\u7a0b\u9002\u7528\u4e8e\u4f7f\u7528 <code>--network host</code> \u6a21\u5f0f\u8fd0\u884c Nginx \u5bb9\u5668\u7684\u573a\u666f\u3002\u5728\u6b64\u6a21\u5f0f\u4e0b\uff0cFail2Ban \u914d\u7f6e\u6bd4 Bridge \u6a21\u5f0f\u66f4\u7b80\u5355\uff0c\u56e0\u4e3a\u4e0d\u9700\u8981\u5904\u7406 Docker \u7684 NAT \u8f6c\u53d1\u94fe\u3002</p>\n<hr/>\n<h4>\ud83d\udccc \u73af\u5883\u4fe1\u606f</h4>\n<ul>\n<li><strong>\u8fd0\u884c\u6a21\u5f0f</strong>\uff1aDocker (Host Network)</li>\n<li><strong>\u65e5\u5fd7\u8def\u5f84</strong>\uff1a<code>/root/nginx/log/access.log</code></li>\n<li><strong>\u76d1\u542c\u7aef\u53e3</strong>\uff1a\u5bbf\u4e3b\u673a\u76f4\u63a5\u76d1\u542c 80/443</li>\n</ul>\n<hr/>\n<h3>\u7b2c\u4e00\u6b65\uff1a\u786e\u8ba4\u5bb9\u5668\u8fd0\u884c\u72b6\u6001</h3>\n<p>\u8bf7\u786e\u4fdd\u60a8\u5df2\u4f7f\u7528 Host \u6a21\u5f0f\u542f\u52a8\u5bb9\u5668\uff1a</p>\n<pre><code class=\"language-bash\"># \u505c\u6b62\u5e76\u5220\u9664\u65e7\u5bb9\u5668\ndocker rm -f nginx01\n\n# \u542f\u52a8\u65b0\u5bb9\u5668\uff08 Host \u6a21\u5f0f\uff09\ndocker run -d \\\n  --name nginx01 \\\n  --restart always \\\n  --network host \\\n  -v \"/root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf\" \\\n  -v \"/root/nginx/html:/usr/share/nginx/html\" \\\n  -v \"/root/nginx/cert:/etc/nginx/cert\" \\\n  -v \"/root/nginx/log:/var/log/nginx\" \\\n  --add-host=host.docker.internal:host-gateway \\\n  nginx\n</code></pre>\n<hr/>\n<h3>\u7b2c\u4e8c\u6b65\uff1a\u914d\u7f6e Fail2Ban \u8fc7\u6ee4\u5668</h3>\n<p>\u6211\u4eec\u9700\u8981\u521b\u5efa\u89c4\u5219\u6765\u544a\u8bc9 Fail2Ban \u4ec0\u4e48\u662f\u6076\u610f\u884c\u4e3a\u3002</p>\n<h4>1. \u9632\u6076\u610f\u626b\u63cf\uff08 Bad Request \uff09</h4>\n<p>\u62e6\u622a\u626b\u63cf\u654f\u611f\u6587\u4ef6\uff08\u5982 <code>.env</code>, <code>wp-login.php</code>\uff09\u7684\u653b\u51fb\u8005\u3002</p>\n<pre><code class=\"language-bash\">sudo nano /etc/fail2ban/filter.d/nginx-bad-request.conf\n</code></pre>\n<pre><code class=\"language-ini\">[Definition]\nfailregex = ^&lt;HOST&gt; - - .* \"(GET|POST|HEAD) .*\\.(php|asp|aspx|jsp|cgi|env|git|yml|sql|bak|tar|gz|zip|rar|sh) HTTP.*\" (400|401|403|404) .*$\n            ^&lt;HOST&gt; - - .* \"(GET|POST|HEAD) .*/(phpmyadmin|admin|setup|manager|dashboard|wp-login|xmlrpc).* HTTP.*\" (400|401|403|404) .*$\nignoregex =\n</code></pre>\n<h4>2. \u9632\u9ad8\u9891 CC \u653b\u51fb\uff08 Anti-Flood \uff09</h4>\n<p>\u62e6\u622a\u8bf7\u6c42\u9891\u7387\u8fc7\u9ad8\u7684 IP \uff0c\u4f46\u6392\u9664\u9759\u6001\u8d44\u6e90\uff08\u56fe\u7247\u3001CSS \u7b49\uff09\u4ee5\u514d\u8bef\u5c01\u3002</p>\n<pre><code class=\"language-bash\">sudo nano /etc/fail2ban/filter.d/nginx-cc.conf\n</code></pre>\n<pre><code class=\"language-ini\">[Definition]\nfailregex = ^&lt;HOST&gt; - - .* \"(GET|POST|HEAD).*HTTP.*\" .*$\n# \u5ffd\u7565\u56fe\u7247\u3001CSS \u3001JS \u7b49\u9759\u6001\u8d44\u6e90\nignoregex = \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|mp4|webm) HTTP\n</code></pre>\n<hr/>\n<h3>\u7b2c\u4e09\u6b65\uff1a\u914d\u7f6e\u76d1\u72f1\uff08<code>jail.local</code>\uff09</h3>\n<p>\u8fd9\u662f Host \u6a21\u5f0f\u4e0e Bridge \u6a21\u5f0f\u6700\u5927\u7684\u533a\u522b\u70b9\u3002**Host \u6a21\u5f0f\u4e0b\uff0c\u6211\u4eec\u4e0d\u9700\u8981\u6307\u5b9a <code>chain = DOCKER-USER</code>**\u3002</p>\n<pre><code class=\"language-bash\">sudo nano /etc/fail2ban/jail.local\n</code></pre>\n<pre><code class=\"language-ini\">[DEFAULT]\n# \u767d\u540d\u5355 IP\uff1a\u5373\u4f7f\u8fd9\u4e9b IP \u89e6\u53d1\u89c4\u5219\u4e5f\u4e0d\u4f1a\u88ab\u5c01\n# \u5efa\u8bae\u52a0\u4e0a localhost\nignoreip = 127.0.0.1/8 192.168.0.0/16 10.0.0.0/8\n\n# \u9ed8\u8ba4\u5c01\u7981\u65f6\u95f4\uff1a1 \u5c0f\u65f6\nbantime  = 1h\n# \u67e5\u627e\u65f6\u95f4\u7a97\u53e3\uff1a10 \u5206\u949f\nfindtime = 10m\n# \u6700\u5927\u5c1d\u8bd5\u6b21\u6570\uff1a5 \u6b21\nmaxretry = 5\n\n# --- Host \u6a21\u5f0f\u52a8\u4f5c\u914d\u7f6e ---\n# \u76f4\u63a5\u4f7f\u7528\u6807\u51c6 iptables-multiport \u5373\u53ef\uff0c\u65e0\u9700\u6307\u5b9a chain\nbanaction = iptables-multiport\n\n# ==========================================\n# \u89c4\u5219 1\uff1a\u9632\u6b62\u6076\u610f\u626b\u63cf\n# ==========================================\n[nginx-bad-request]\nenabled  = true\nlogpath  = /root/nginx/log/access.log\nfilter   = nginx-bad-request\nport     = 80,443\nmaxretry = 3\nbantime  = 24h\n\n# ==========================================\n# \u89c4\u5219 2\uff1a\u9632\u6b62 CC \u653b\u51fb\n# ==========================================\n[nginx-cc]\nenabled  = true\nlogpath  = /root/nginx/log/access.log\nfilter   = nginx-cc\nport     = 80,443\nfindtime = 60\n# \u5141\u8bb8\u6bcf\u5206\u949f 120 \u6b21\u975e\u9759\u6001\u8d44\u6e90\u8bf7\u6c42\nmaxretry = 120\nbantime  = 2h\n</code></pre>\n<hr/>\n<h3>\u7b2c\u56db\u6b65\uff1a\u91cd\u542f\u4e0e\u9a8c\u8bc1</h3>\n<h4>1. \u91cd\u542f Fail2Ban</h4>\n<pre><code class=\"language-bash\">sudo systemctl restart fail2ban\n</code></pre>\n<h4>2. \u9a8c\u8bc1\u72b6\u6001</h4>\n<pre><code class=\"language-bash\">sudo fail2ban-client status\n</code></pre>\n<p>\u5e94\u770b\u5230\u4ee5\u4e0b\u4e24\u4e2a\u76d1\u72f1\u5904\u4e8e\u6d3b\u52a8\u72b6\u6001\uff1a</p>\n<ul>\n<li><code>nginx-bad-request</code></li>\n<li><code>nginx-cc</code></li>\n</ul>\n<h4>3. \u9a8c\u8bc1\u9632\u706b\u5899\u89c4\u5219</h4>\n<p>\u68c0\u67e5 INPUT \u94fe\uff08 Host \u6a21\u5f0f\u8d70\u8fd9\u91cc\uff09\uff1a</p>\n<pre><code class=\"language-bash\">sudo iptables -L INPUT -n\n</code></pre>\n<p>\u786e\u8ba4\u89c4\u5219\u4e2d\u51fa\u73b0\u9488\u5bf9\u76ee\u6807 IP \u7684 <code>DROP</code> \u6216 <code>REJECT</code> \u8bb0\u5f55\uff0c\u8868\u793a\u5c01\u7981\u751f\u6548\u3002</p>\n<hr/>\n<p>\u2705 <strong>\u5b8c\u6210\uff01</strong><br/>\n\u60a8\u7684 Nginx \u5bb9\u5668\u5df2\u5728 Host \u6a21\u5f0f\u4e0b\u6210\u529f\u96c6\u6210 Fail2Ban \uff0c\u5177\u5907\u62b5\u5fa1\u6076\u610f\u626b\u63cf\u4e0e CC \u653b\u51fb\u7684\u80fd\u529b\u3002</p>\n", 
      "date_published": "2025-11-28T07:45:59+00:00", 
      "title": "fail2ban \u4fdd\u62a4 nginx \u65b9\u6848", 
      "id": "https://www.v2ex.com/t/1175687"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/qinrui", 
        "name": "qinrui", 
        "avatar": "https://cdn.v2ex.com/avatar/3a2b/ef30/273149_large.png?m=1666491093"
      }, 
      "url": "https://www.v2ex.com/t/1174657", 
      "title": "\u9ea6\u5f53\u52b3\u670d\u52a1\u6a21\u5f0f\u662f nginx\uff0c\u80af\u5fb7\u57fa\u670d\u52a1\u6a21\u5f0f\u662f apache\uff0c\u8fd9\u6837\u7406\u89e3\u5bf9\u4e0d\u5bf9\uff1f", 
      "id": "https://www.v2ex.com/t/1174657", 
      "date_published": "2025-11-24T04:26:18+00:00", 
      "content_html": "<p>\u5f88\u591a\u5e74\u6ca1\u53bb\u80af\u5fb7\u57fa\u4e86\uff0c\u8bb0\u5f97\u4ee5\u524d\u662f\u6765\u4e00\u4e2a\u987e\u5ba2\uff0c\u4e00\u4e2a\u670d\u52a1\u5458\u8981\u8d1f\u8d23\u4ece\u70b9\u5355\u3001\u652f\u4ed8\u5230\u7ed9\u9910\u7684\u5168\u90e8\u6d41\u7a0b\u4e4b\u540e\u624d\u670d\u52a1\u4e0b\u4e00\u4e2a\u987e\u5ba2\uff0c\u6548\u7387\u6781\u5176\u4f4e\u4e0b\uff0c\u4e0d\u77e5\u9053\u73b0\u5728\u53d8\u4e86\u6ca1\u6709</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yaocf", 
        "name": "yaocf", 
        "avatar": "https://cdn.v2ex.com/avatar/9297/ff2d/465954_large.png?m=1737011357"
      }, 
      "url": "https://www.v2ex.com/t/1160074", 
      "date_modified": "2025-09-18T01:04:19+00:00", 
      "content_html": "<p>\u5f88\u4e45\u4e4b\u524d\u770b\u5230\u7684\u4e00\u4e2a\u6709\u610f\u601d\u7684\u955c\u50cf\u7ad9\uff0c\u628a\u88ab\u4ee3\u7406\u5730\u5740\u653e\u5230\u4e86 url \u53c2\u6570\u4e2d\uff0c\u56e0\u6b64\u53ef\u4ee5\u540c\u65f6\u955c\u50cf\u591a\u4e2a\u7f51\u7ad9\u3002\u5b83\u7684 url \u7c7b\u4f3c\u4e8e\uff08\u670d\u52a1\u5f88\u4e45\u4e4b\u524d\u5c31\u5df2\u7ecf\u8bbf\u95ee\u4e0d\u4e86\u4e86\uff09\uff1a\n<a href=\"https://oracleusa.ml/-----https://www.google.com/\" rel=\"nofollow\">https://oracleusa.ml/-----https://www.google.com/</a></p>\n<p>\u60f3\u8bf7\u95ee\u6709\u6ca1\u6709\u7c7b\u4f3c\u7684\u9879\u76ee\u53ef\u4ee5\u63a8\u8350\u4e00\u4e0b\u7684\uff1f\u60f3\u90e8\u7f72\u4e00\u4e2a\u770b\u770b\u3002</p>\n<p>\u6216\u8005\u8fd9\u7c7b\u670d\u52a1\u8be5\u7528\u4ec0\u4e48\u5173\u952e\u8bcd\u641c\uff1f</p>\n<p>\u611f\u89c9\u6709\u70b9\u50cf\u865a\u62df\u6d4f\u89c8\u5668\u4e86\u90fd\u3002</p>\n", 
      "date_published": "2025-09-18T01:02:54+00:00", 
      "title": "oracleusa.ml \u7684\u5b9e\u73b0\u539f\u7406", 
      "id": "https://www.v2ex.com/t/1160074"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/puremaker", 
        "name": "puremaker", 
        "avatar": "https://cdn.v2ex.com/avatar/cc2d/7de5/647810_large.png?m=1754989837"
      }, 
      "url": "https://www.v2ex.com/t/1158023", 
      "title": "\u5c1d\u8bd5\u81ea\u5df1\u914d\u7f6e\u8f6c\u53d1\u540e\u7aef\u8bf7\u6c42\u7684\u65f6\u5019\u6709\u4e2a\u7591\u95ee", 
      "id": "https://www.v2ex.com/t/1158023", 
      "date_published": "2025-09-09T06:39:16+00:00", 
      "content_html": "<p>\u9996\u5148\u8fd9\u4e2a\u662f\u524d\u7aef\u9879\u76ee\u9875\u9762\u7684\u914d\u7f6e\uff0c\u6ca1\u5565\u95ee\u9898\uff0c</p>\n<pre><code>location / {\n        root   /home/party_game/dist; # \u8bbf\u95ee\u6839\u76ee\u5f55\n        index  index.html index.htm; # \u5165\u53e3\u6587\u4ef6\n        try_files $uri $uri/ /index.html;\n    }\n</code></pre>\n<p>\u7136\u540e\u6b63\u5e38\u60c5\u51b5\u8f6c\u53d1\u540e\u7aef\u8bf7\u6c42\u5e94\u5728\u518d\u5199\u4e00\u4e2a location \u62e6\u622a\uff0c\u4e5f\u5c31\u662f\u8fd9\u6837</p>\n<pre><code>location /api {\n        proxy_pass http://localhost:60101;\n    }\n</code></pre>\n<p>\u770b\u7740\u4e5f\u6ca1\u5565\u95ee\u9898\u662f\u5427\uff1f\u4f46\u662f\u9707\u60ca\u6211\u7684\u662f\uff0c\u6211\u5728\u524d\u7aef\u9879\u76ee\u548c\u540e\u7aef\u9879\u76ee\u91cc\u914d\u7f6e\u7684\u8bf7\u6c42\u5730\u5740\u524d\u7f00\u90fd\u662f pgApi \uff08\u4f8b\uff1a http://localhost:60101/pgApi/auth/login \uff09\uff0c\u5982\u6b64\u6211\u53c8\u5c1d\u8bd5\u4e86\u628a\u8bf7\u6c42\u62e6\u622a\u6362\u6210\u4e86</p>\n<pre><code>location /abc {\n        proxy_pass http://localhost:60101;\n    }\n\u6216\u8005\nlocation /xxxx {\n        proxy_pass http://localhost:60101;\n    }\n</code></pre>\n<p>\u4f46\u662f nginx \u90fd\u80fd\u628a\u524d\u7aef\u8bf7\u6c42\u6b63\u5e38\u7684\u8f6c\u53d1\u5230\u540e\u7aef\u670d\u52a1\u4e0a\uff0c\u8fd9\u4e2a\u662f\u4e3a\u4ec0\u4e48\u5440\uff1f\n\u6709\u70b9\u65e0\u6cd5\u7406\u89e3\u8fd9\u90e8\u5206\u539f\u7406\uff0c\u7f51\u4e0a\u4e5f\u6ca1\u6709\u641c\u5230\u6bd4\u8f83\u7b26\u5408\u6211\u95ee\u9898\u7684\u7b54\u6848\uff0c\u7279\u6765\u8bf7\u6559</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/fhrui0706", 
        "name": "fhrui0706", 
        "avatar": "https://cdn.v2ex.com/gravatar/dfb33a297aa3454793b3ee4818d22381?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1150489", 
      "date_modified": "2025-08-06T13:26:04+00:00", 
      "content_html": "<p>\u8bf7\u6559 Nginx \u65f6\u5b8c\u6574\u7684 SSL \u5237\u65b0\u6559\u7a0b\u6216\u8005\u811a\u672c,\u4f8b\u5982\u8bc1\u4e66\u5df2\u7ecf\u7533\u8bf7,\u524d\u8f88\u4e00\u822c\u662f\u600e\u4e48\u505a\u7684</p>\n", 
      "date_published": "2025-08-06T13:24:38+00:00", 
      "title": "\u8bf7\u6559 Nginx \u65f6\u5b8c\u6574\u7684 SSL \u5237\u65b0\u6559\u7a0b\u6216\u8005\u811a\u672c", 
      "id": "https://www.v2ex.com/t/1150489"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/deqiying", 
        "name": "deqiying", 
        "avatar": "https://cdn.v2ex.com/avatar/a7c6/89dd/722796_large.png?m=1753358764"
      }, 
      "url": "https://www.v2ex.com/t/1149876", 
      "date_modified": "2025-08-04T12:07:39+00:00", 
      "content_html": "\u5927\u5bb6\u90fd\u7528\u4ec0\u4e48\u65b9\u6848\u6536\u96c6 nginx \u65e5\u5fd7\u548c\u5206\u9879\u76ee\u6570\u636e\u7edf\u8ba1\uff1f<br />\u73b0\u5728\u9879\u76ee\u7684\u90e8\u7f72\u6709\u70b9\u4e71\uff0c\u5934\u5927\uff0c\u5c0f\u767d\u6765\u6c42\u6551\u4e86<br />1.\u6bcf\u53f0\u670d\u52a1\u5668\u90fd\u90e8\u7f72\u6709\u4e0d\u540c\u7684\u9879\u76ee\uff0c\u65e5\u5fd7\u90fd\u662f\u6253\u5230 access.log \uff08\u6ca1\u6709\u6309\u9879\u76ee\u5212\u5206\uff09<br />2.\u4e00\u4e2a\u9879\u76ee\u53ef\u80fd\u5728\u4e0d\u540c\u670d\u52a1\u5668\u90fd\u6709\u8282\u70b9\uff0c\u4e5f\u5c31\u662f\u662f\u4e00\u4e2a\u9879\u76ee\u7684\u8bbf\u95ee\u65e5\u5fd7\u53ef\u80fd\u5728\u4e24\u4e2a access.log \u4e2d<br />3.\u540c\u4e00\u4e2a\u9879\u76ee\u53ef\u4ee5\u901a\u8fc7\u57df\u540d\u6216\u8005 path \u533a\u5206<br /><br />\u8fd9\u79cd\u5947\u602a\u7684\u90e8\u7f72\u65b9\u5f0f\u6709\u65b9\u6848\u80fd\u6536\u96c6\u65e5\u5fd7\u5e76\u6309\u9879\u76ee\u8fdb\u884c\u7edf\u8ba1\u5212\u5206\u5417\uff1f\u5c0f\u9879\u76ee\uff0c\u65b9\u6848\u8f7b\u91cf\u70b9\u597d\uff0cAI \u8ba9\u5f15\u5165 ELK \u6808\u90e8\u7f72\uff0c\u6bd4\u9879\u76ee\u672c\u8eab\u90fd\u590d\u6742\u4e86\u3002<br />\u5c0f\u767d\u4e00\u4e2a\uff0c\u6073\u8bf7\u5404\u4f4d\u5927\u4f6c\u6307\u70b9\u3002", 
      "date_published": "2025-08-04T10:46:34+00:00", 
      "title": "\u95ee\u95ee\u5927\u5bb6 nginx \u65e5\u5fd7\u6d41\u91cf\u5206\u6790\u7528\u4ec0\u4e48\u65b9\u6848\uff1f", 
      "id": "https://www.v2ex.com/t/1149876"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/kyonn", 
        "name": "kyonn", 
        "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1149767", 
      "date_modified": "2025-08-05T00:55:28+00:00", 
      "content_html": "<p>\u5982\u4e0b\u4e00\u4e2a\u6700\u7b80\u5316\u7684\u53cd\u4ee3\u914d\u7f6e\uff0c\u5c06\u672c\u5730 80/443 \u7aef\u53e3\u7684 /git/ \u53cd\u4ee3\u5230\u672c\u5730\u5bb9\u5668\u7684 8085 \u7aef\u53e3\u3002</p>\n<p>\u8bbf\u95ee 127.0.0.1/git/ \u6210\u529f\u8df3\u8f6c\u5230 8085 \u7aef\u53e3\u5bb9\u5668\u7684 web \u9875\u9762\uff0c\u4f46\u662f\u53d1\u73b0\u6709\u8bf8\u591a\u95ee\u9898\uff1a</p>\n<ol>\n<li>css \u548c png \u52a0\u8f7d\u5931\u8d25\u3002\u6293\u4e86\u4e0b\u8c03\u8bd5\u4fe1\u606f\uff0c\u53d1\u73b0\u662f\u5bb9\u5668\u8fd4\u56de\u7684\u6837\u5f0f\u7b49\u6587\u4ef6\u5730\u5740\u90fd\u662f\u7edd\u5bf9\u8def\u5f84 /\uff0c\u8fdb\u800c\u5bfc\u81f4\u6d4f\u89c8\u5668\u8bf7\u6c42\u6837\u5f0f\u6587\u4ef6\u65f6\uff0c\u6ca1\u6709\u6b63\u786e\u8d70 location /git/ \u7684\u53cd\u4ee3\u3002\u901a\u8fc7 sub_filter \u6307\u4ee4\u6279\u91cf\u66ff\u6362\u540e\u89e3\u51b3\u4e86\u3002</li>\n<li>\u95ee\u9898 1 \u89e3\u51b3\u540e\uff0c\u70b9\u51fb\u5176\u5b83\u9875\u9762\u5143\u7d20\uff0c\u8fd8\u662f\u4f1a\u51fa\u73b0 404 \u9519\u8bef\u3002\u539f\u56e0\u540c 1</li>\n</ol>\n<p>\u7c7b\u4f3c\u8fd9\u79cd\u4e8c\u7ea7\u76ee\u5f55\u7684\u53cd\u5411\u4ee3\u7406\uff0c\u662f\u4e0d\u662f\u5929\u7136\u6709\u7f3a\u9677\uff0c\u6ca1\u529e\u6cd5\u50cf \u4e8c\u7ea7\u57df\u540d \u6216 \u4e09\u7ea7\u57df\u540d \u53cd\u4ee3\u90a3\u6837\u5b8c\u7f8e\u5b9e\u73b0\uff1f</p>\n<p>\u6ce8\uff1a</p>\n<ol>\n<li>\u57df\u540d\u7ba1\u7406\u4e0d\u5728\u624b\u4e0a\uff0c\u6dfb\u52a0\u591a\u4e2a\u4e8c\u7ea7\u6216\u4e09\u7ea7\u57df\u540d\u6bd4\u8f83\u9ebb\u70e6\uff0c\u6240\u4ee5\u8003\u8651\u7684\u662f\u540c\u4e00\u4e2a\u57df\u540d\u4e0b\u7684\u5b50\u76ee\u5f55\u3002</li>\n<li>\u53ef\u4ee5\u4fee\u6539\u53cd\u4ee3 upstream docker \u7684\u914d\u7f6e\uff0c\u56e0\u4e3a\u662f\u81ea\u5df1\u90e8\u7f72\u7684\u3002</li>\n</ol>\n<pre><code>location /git/ {\n    proxy_http_version 1.1;\n    proxy_pass http://192.168.1.13:8085/;\n}\n</code></pre>\n", 
      "date_published": "2025-08-04T04:29:16+00:00", 
      "title": "nginx \u4e8c\u7ea7\u76ee\u5f55\u53cd\u5411\u4ee3\u7406\u662f\u4e0d\u662f\u6709\u5148\u5929\u7f3a\u9677\uff1f", 
      "id": "https://www.v2ex.com/t/1149767"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/kyonn", 
        "name": "kyonn", 
        "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1149519", 
      "date_modified": "2025-08-03T14:41:05+00:00", 
      "content_html": "<p>\u624b\u5934\u6ca1\u6709\u73b0\u6210\u7684\u6d4b\u8bd5\u73af\u5883\uff0cAI \u7684\u56de\u7b54\u611f\u89c9\u4e5f\u4e0d\u592a\u9760\u8c31\uff0c\u54a8\u8be2\u4e0b V \u53cb \u5173\u4e8e nginx rewrite \u6307\u4ee4\u7684\u95ee\u9898\uff1a</p>\n<p>\u4e00\u3001rewrite \u6307\u4ee4\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u662f\u90e8\u5206\u5339\u914d\u8fd8\u662f\u5b8c\u5168\u5339\u914d\u624d\u751f\u6548\uff1f</p>\n<p>\u6bd4\u5982\u4e0b\u9762\u7684\u914d\u7f6e\u4e2d\uff0c\u8bf7\u6c42 /name/jane-lotus \u80af\u5b9a\u4f1a\u89e6\u53d1 rewrite \u6307\u4ee4\uff0c\u6700\u7ec8\u8bf7\u6c42\u5730\u5740\u4e3a http://user-center/users?name=jane-lotus \u3002</p>\n<p>\u90a3\u4e48\u8bf7\u6c42 /name/regions/bbb \u4f1a\u4e0d\u4f1a\u89e6\u53d1 rewrite \u7684 URI \u66ff\u6362\uff1f\u6700\u7ec8\u8bf7\u6c42\u5730\u5740\u662f\u591a\u5c11\uff1f</p>\n<p>\u8fd9\u7bc7<a href=\"https://www.cnblogs.com/guzb/p/column-nginx-config_of_location_and_proxy_pass_and_the_difference_of_absence_of_tail_slash.html\" rel=\"nofollow\">\u6587\u7ae0</a>\u8bf4\u4e0d\u4f1a\u89e6\u53d1 rewrite \uff0cAI \u7684\u56de\u7b54\u662f\u4f1a\u89e6\u53d1 rewrite \u3002</p>\n<pre><code>location /name/ {\n    rewrite /name/([^/]+) /users?name=$1 break;\n    proxy_passs http://user-center/main/basicinfo/;\n}\n</code></pre>\n<p>\u4e8c\u3001\u8fd8\u662f\u4e0a\u9762\u7684\u914d\u7f6e\uff0c\u5047\u5982\u539f\u59cb\u8bf7\u6c42\u91cc\u5e26\u4e86\u67e5\u8be2\u53c2\u6570\uff0c\u90a3\u4e48\u89e6\u53d1 rewrite \u540e\u4f1a\u4e0d\u4f1a\u628a\u539f\u59cb\u8bf7\u6c42\u53c2\u6570\u4e5f\u8ffd\u52a0\u7ed9\u65b0\u7684\u8bf7\u6c42\u5730\u5740\uff1f rewrite \u65b0\u76ee\u6807\u91cc\u6709\u6ca1\u6709\u65b0\u7684\u67e5\u8be2\u53c2\u6570\u662f\u5426\u4f1a\u5f71\u54cd\u8001\u7684\u67e5\u8be2\u53c2\u6570\u8ffd\u52a0\u5230\u6700\u7ec8\u8bf7\u6c42\u91cc\uff1f</p>\n<p>\u4e09\u3001\u662f\u5426\u6709\u6bd4\u8f83\u7cfb\u7edf\u7684 nginx \u914d\u7f6e\u6559\u7a0b\u63a8\u8350\u6216\u8005\u6a21\u62df\u6d4b\u8bd5\u73af\u5883\u9a8c\u8bc1 nginx \u8be6\u7ec6\u6267\u884c\u8fc7\u7a0b\u7684\u65b9\u6cd5\uff1f</p>\n", 
      "date_published": "2025-08-02T14:04:33+00:00", 
      "title": "nginx rewrite \u6307\u4ee4\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1149519"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/kyonn", 
        "name": "kyonn", 
        "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1149311", 
      "date_modified": "2025-08-02T11:26:27+00:00", 
      "content_html": "<p>\u6284\u6765\u7684 nginx <a href=\"https://inz.fi/posts/nginx-cgit-and-git-http-backend.html\" rel=\"nofollow\">\u914d\u7f6e</a>\uff0c\u7b2c 1 \u4e2a location \u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u4e0d\u592a\u786e\u5b9a\u662f\u5426\u6b63\u786e\u3002\u6309\u7167 AI \u7684\u89e3\u7b54\uff0c\u7528\u4e8e\u5339\u914d\u4e0b\u9762\u8fd9\u51e0\u79cd\u8def\u5f84\u3002\u5b9e\u6d4b\u4e0b\u6765\uff0chttp git clone \u4e5f\u662f\u5931\u8d25\u7684\uff0c\u672a\u5339\u914d\u7b2c 1 \u4e2a location \u3002\u6709\u51e0\u4e2a\u7591\u70b9\uff1a</p>\n<ol>\n<li>\u7c7b\u4f3c\u8fd9\u79cd\u591a\u884c\u7684\u6b63\u5219\uff0c\u6bcf\u4e00\u884c\u4e4b\u95f4\u662f\u4ec0\u4e48\u5173\u7cfb\uff1f\u6309\u7167 AI \u7684\u89e3\u7b54\u770b\u4e0a\u53bb\u662f\u6216\u7684\u5173\u7cfb\uff0c\u4f46\u662f\u6ca1\u627e\u5230\u6b63\u5219\u89c4\u5219\u7684\u4f9d\u636e\u3002</li>\n<li>\u6bcf\u4e00\u884c\u6b63\u5219\u7ed3\u5c3e\u662f \u7a7a\u683c + \u5355\u5f15\u53f7\uff0c\u8fd9\u4e2a\u4e0d\u77e5\u9053\u53c8\u662f\u4ec0\u4e48\u89c4\u5219\uff1f</li>\n</ol>\n<ul>\n<li>/git/xxx/HEAD \uff08\u83b7\u53d6\u4ed3\u5e93\u7684 HEAD \u6587\u4ef6\uff09</li>\n<li>/git/xxx/info/refs \uff08\u83b7\u53d6\u4ed3\u5e93\u5f15\u7528\u4fe1\u606f\uff09</li>\n<li>/git/xxx/objects/...\uff08\u5904\u7406 Git \u5bf9\u8c61\uff09</li>\n<li>/git/xxx/git-upload-pack</li>\n</ul>\n<pre><code>\nlocation ~ \"(?x)^/git(?&lt;path&gt;/.*/(?:HEAD '\n                             info/refs '\n                             objects/(?:info/[^/]+ '\n                                        [0-9a-f]{2}/[0-9a-f]{38} '\n                                        pack/pack-[0-9a-f]{40}\\.(?:pack '\n                                                                   idx)) '\n                             git-upload-pack))$\" {\n        error_page 491 = @auth;\n        if ($query_string = service=git-receive-pack) {\n                return 491;\n        }\n        client_max_body_size                    0;\n\n        fastcgi_param   SCRIPT_FILENAME         /usr/lib/git-core/git-http-backend;\n        include         fastcgi_params;\n        fastcgi_param   GIT_HTTP_EXPORT_ALL     \"\";\n        fastcgi_param   GIT_PROJECT_ROOT        /srv/git;\n        fastcgi_param   PATH_INFO               $path;\n\n        fastcgi_param   REMOTE_USER             $remote_user;\n        fastcgi_pass    unix:/var/run/fcgiwrap.socket;\n}\nlocation ~ \"^/git(?&lt;path&gt;/.*/git-receive-pack)$\" {\n        error_page 491 = @auth;\n        return 491;\n}\nlocation @auth {\n        auth_basic            \"Git write access\";\n        auth_basic_user_file  /srv/git/.htpasswd;\n\n        client_max_body_size                    0;\n\n        fastcgi_param   SCRIPT_FILENAME         /usr/lib/git-core/git-http-backend;\n        include         fastcgi_params;\n        fastcgi_param   GIT_HTTP_EXPORT_ALL     \"\";\n        fastcgi_param   GIT_PROJECT_ROOT        /srv/git;\n        fastcgi_param   PATH_INFO               $path;\n\n        fastcgi_param   REMOTE_USER             $remote_user;\n        fastcgi_pass    unix:/var/run/fcgiwrap.socket;\n}\nlocation ~ ^/git(?&lt;path&gt;/.*)$ {\n        alias /usr/share/cgit;\n        try_files $1 @cgit;\n}\nlocation @cgit {\n        include         fastcgi_params;\n        fastcgi_param   SCRIPT_FILENAME /usr/lib/cgit/cgit.cgi;\n        fastcgi_param   PATH_INFO       $path;\n        fastcgi_param   QUERY_STRING    $args;\n        fastcgi_param   HTTP_HOST       $server_name;\n\n        fastcgi_param   CGIT_CONFIG     /srv/git/.cgitrc;\n\n        fastcgi_pass    unix:/var/run/fcgiwrap.socket;\n}\n</code></pre>\n", 
      "date_published": "2025-08-01T07:44:12+00:00", 
      "title": "\u95ee\u4e2a nginx \u914d\u7f6e\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1149311"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/zhazhibao", 
        "name": "zhazhibao", 
        "avatar": "https://cdn.v2ex.com/gravatar/4cbf0bd1aef4d56fb9bb3fb2577f82e8?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1140901", 
      "title": "\u8bf7\u95ee\u4e0b\u4e3a\u5565\u5fae\u4fe1\u5ba2\u6237\u7aef\u8bbf\u95ee\u5230 nginx \u6ca1\u6709\u53c2\u6570\u4e86\uff1f", 
      "id": "https://www.v2ex.com/t/1140901", 
      "date_published": "2025-06-25T04:40:11+00:00", 
      "content_html": "<p>\u4f8b\u5982\u5fae\u4fe1 APP \u4e2d\u70b9\u51fb <a href=\"http://a.cn/10003\" rel=\"nofollow\">a.cn/10003</a> \uff0c\u5230 nginx \u5c42\u6ca1\u6709\u4e86 10003 \u53c2\u6570\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/baalchina", 
        "name": "baalchina", 
        "avatar": "https://cdn.v2ex.com/gravatar/80835c340888c4974dea3bdbfedf22f5?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1131690", 
      "title": "\u6709\u5144\u5f1f\u4eec\u7528 nginx proxy manager\uff08\u6216\u8005\u5176\u4ed6\u56fe\u5f62\u5316\u5de5\u5177\uff09\u6765\u7ba1\u7406 nginx \u53cd\u5411\u4ee3\u7406\u7684\u5417\uff1f", 
      "id": "https://www.v2ex.com/t/1131690", 
      "date_published": "2025-05-14T06:05:35+00:00", 
      "content_html": "<p>\u6709\u5144\u5f1f\u4eec\u7528 nginx proxy manager \uff08\u6216\u8005\u5176\u4ed6\u56fe\u5f62\u5316\u5de5\u5177\uff09\u6765\u7ba1\u7406 nginx \u53cd\u5411\u4ee3\u7406\u7684\u5417\uff1f</p>\n<p>\u6211\u4eec\u7684\u4e3b\u8981\u9700\u6c42\u662f\u53cd\u5411\u4ee3\u7406\uff0c\u73b0\u5728\u7528 nginx \u5728\u8dd1\u3002\u56e0\u4e3a\u65e5\u5e38\u8fd0\u7ef4\u7684\u540c\u4e8b\u5bf9\u547d\u4ee4\u884c\u4e0d\u592a\u719f\uff0c\u64cd\u4f5c\u4e5f\u9ebb\u70e6\uff0c\u60f3\u901a\u8fc7 gui \u5de5\u5177\u6765\u8fdb\u884c\u7ba1\u7406\uff0c\u56e0\u4e3a\u4e4b\u524d\u9047\u5230\u8fc7\u597d\u51e0\u6b21\u547d\u4ee4\u884c\u64cd\u4f5c\u5931\u8d25\u4e0d\u5c0f\u5fc3\u6539\u9519\u4e86\u3002</p>\n<p>\u73b0\u5728\u4e3b\u8981\u62c5\u5fc3\u7684\u662f\u7b2c\u4e00\u4e2a npm \u597d\u50cf\u5185\u7f6e\u4e86 openresty \uff0c\u4f3c\u4e4e\u5355\u72ec\u5347\u7ea7\u90fd\u4e0d\u662f\u592a\u65b9\u4fbf\u3002\u7b2c\u4e8c\u8fd9\u4e2a\u4e1c\u897f\u6bd5\u7adf\u5957\u4e86\u4e00\u5c42 docker \u5bb9\u5668\uff0c\u4e0d\u77e5\u9053\u7a33\u5b9a\u6027\u5982\u4f55\uff0c\u4e07\u4e00\u5d29\u4e86\u4e0d\u50cf\u666e\u901a nginx \u90a3\u4e48\u5bb9\u6613\u6062\u590d\u3002</p>\n<p>\u6216\u8005\u6709\u5176\u4ed6\u7c7b\u4f3c\u7684\u5de5\u5177\u53ef\u4ee5\u63a8\u8350\u4e0d\uff1f\u4e3b\u8981\u9700\u6c42\u5176\u5b9e\u5c31\u662f\u901a\u8fc7 gui \u754c\u9762\uff0c\u80fd\u51cf\u5c11\u65e5\u5e38\u914d\u7f6e\u7684\u5de5\u4f5c\u590d\u6742\u5ea6\u548c\u51fa\u9519\u51e0\u7387\u3002</p>\n<p>\u8c22\u8c22\uff01</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/whereFly", 
        "name": "whereFly", 
        "avatar": "https://cdn.v2ex.com/avatar/e4ca/b6f3/469885_large.png?m=1743487710"
      }, 
      "url": "https://www.v2ex.com/t/1122559", 
      "title": "\u8bf7\u95ee Nginx \u600e\u4e48\u6dfb\u52a0 CORS \u767d\u540d\u5355\uff1f", 
      "id": "https://www.v2ex.com/t/1122559", 
      "date_published": "2025-04-01T06:06:42+00:00", 
      "content_html": "<p>\u6bd4\u5982 <a href=\"http://a.com\" rel=\"nofollow\">a.com</a> \u4e0b\u7684\u56fe\u7247\u3001js \u6587\u4ef6\u7b49\u7b49\uff0c\u53ea\u5141\u8bb8 <a href=\"http://b.com\" rel=\"nofollow\">b.com</a> \u3001<a href=\"http://c.com\" rel=\"nofollow\">c.com</a> \u8c03\u7528\u3002\n\u5176\u4ed6\u57df\u540d\u8c03\u7528\u7684\u8bdd\u5c31\u663e\u793a 404 \u6216\u8005 403 \u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/vincentWdp", 
        "name": "vincentWdp", 
        "avatar": "https://cdn.v2ex.com/gravatar/e8f4a89b48b07934dd9196059a252ed2?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1120174", 
      "date_modified": "2025-03-21T08:15:28+00:00", 
      "content_html": "<p>\u5148\u53e0\u7532: \u6211\u662f\u4e1a\u4f59\u8fd0\u7ef4.</p>\n<p>\u6628\u5929, \u5728\u5b9d\u5854\u4e0a\u5bf9\u7ebf\u4e0a\u670d\u52a1 A \u4fee\u6539 proxy_pass, \u7aef\u53e3\u4ece 7511 \u6539\u6210 7501:</p>\n<pre><code>location / { \n    proxy_pass http://localhost:7501; \n}\n</code></pre>\n<p>\u66f4\u65b0\u914d\u7f6e\u540e, \u9519\u8bef\u65e5\u5fd7\u663e\u793a upstream \u4f9d\u65e7\u662f 127.0.0.1:7511, \u8be2\u95ee AI, \u53cd\u590d\u6298\u817e\u540e, \u4f9d\u65e7\u6ca1\u80fd\u89e3\u51b3. \u4f46\u5728\u6b64\u671f\u95f4, \u6ca1\u6709\u4efb\u4f55\u62a5\u9519, \u5305\u62ec\u5728\u5b9d\u5854\u4e0a\u4fdd\u5b58\u914d\u7f6e, \u5728\u670d\u52a1\u5668\u4e0a nginx -t, nginx -s reload, nginx -T \u7b49.</p>\n<p>\u63a8\u6d4b\u914d\u7f6e\u88ab\u7f13\u5b58\u4e86, \u4f46\u4e3a\u4ec0\u4e48\u88ab\u7f13\u5b58, \u4e0d\u6e05\u695a. \u53ea\u80fd\u5148\u91cd\u542f nginx \u628a\u670d\u52a1\u641e\u4e0a\u7ebf. </p>\n<p>\u91cd\u542f\u4e4b\u524d\u5c31\u9690\u9690\u89c9\u5f97\u8fd9\u6b21\u91cd\u542f\u80af\u5b9a\u4e0d\u987a\u5229, \u6bd5\u7adf nginx -s reload \u6ca1\u6709\u751f\u6548, \u6709\u4e9b\u5730\u65b9\u80af\u5b9a\u6709\u95ee\u9898. \u679c\u7136\u62a5\u9519: 7503 \u7aef\u53e3\u88ab\u5360\u7528, nginx \u65e0\u6cd5\u542f\u52a8. </p>\n<p>\u6211\u77ac\u95f4\u5c31\u614c\u4e86, \u5728\u505a\u4e86\u4e24\u6b21\u65e0\u6548\u91cd\u590d\u540e, \u7406\u667a\u56de\u6765\u4e86: nginx -T \u67e5\u51fa 7503 \u5728\u670d\u52a1 B \u7684\u914d\u7f6e\u6587\u4ef6, \u679c\u65ad\u6ce8\u91ca\u90a3\u4e00\u884c\u7136\u540e\u6210\u529f\u542f\u52a8 nginx, \u7ebf\u4e0a\u670d\u52a1\u6062\u590d, \u670d\u52a1 A \u4e5f\u6b63\u5e38\u4e86.</p>\n<p>7503 \u7aef\u53e3\u672c\u8eab\u5c31\u88ab\u4e00\u4e2a next.js \u9879\u76ee\u5360\u7528, \u4f46\u4e0d\u77e5\u9053\u4e3a\u4ec0\u4e48\u8fd8\u8981\u5199\u5230 nginx \u914d\u7f6e\u6587\u4ef6, \u53ea\u80fd\u8ba4\u4e3a\u4e0d\u4f1a nginx. \u95ee\u4e86\u524d\u7aef\u8d1f\u8d23\u4eba, \u5230\u73b0\u5728\u4e5f\u6ca1\u56de\u6211~~</p>\n<p>nginx version: nginx/1.20.2</p>\n", 
      "date_published": "2025-03-21T08:11:50+00:00", 
      "title": "\u4f7f\u7528 nginx \u76d1\u542c\u5df2\u88ab\u76d1\u542c\u7684\u7aef\u53e3, reload \u4e0d\u4f1a\u5931\u8d25, \u4f46\u4f1a\u5bfc\u81f4\u5176\u4ed6\u914d\u7f6e\u4e0d\u751f\u6548.", 
      "id": "https://www.v2ex.com/t/1120174"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/a33291", 
        "name": "a33291", 
        "avatar": "https://cdn.v2ex.com/avatar/e29e/fd46/582789_large.png?m=1752114948"
      }, 
      "url": "https://www.v2ex.com/t/1120024", 
      "date_modified": "2025-03-21T01:25:55+00:00", 
      "content_html": "\u4ee5\u8fd9\u4e2a\u914d\u7f6e\u4e3a\u4f8b<br />location /test {<br /> proxy_pass http://localhost/<br />}<br />\u5f53\u8bf7\u6c42 /test/api?a=1 \u65f6 \u5b9e\u9645\u5411\u4e0a\u6e38\u53d1\u8d77\u7684\u5730\u5740\u4e3a http://localhost/api?a=1<br />\u8fd9\u7531 nginx \u7684\u5185\u7f6e\u673a\u5236\u81ea\u52a8\u5b8c\u6210<br /><br />\u73b0\u5728,\u662f\u5426\u6709 nginx \u53d8\u91cf\u6216\u8005\u5176\u4ed6\u65b9\u6848\u53ef\u4ee5\u83b7\u53d6\u5230\u8fd9\u4e2a http://localhost/api?a=1 (\u76ee\u524d\u662f\u4eba\u5de5\u7b97\u7684)<br /><br />\u5982\u679c\u81ea\u5df1\u5229\u7528 $uri $request_uri \u4e4b\u7c7b\u7684\u62fc\u63a5\u5f88\u9ebb\u70e6", 
      "date_published": "2025-03-21T01:24:28+00:00", 
      "title": "nginx \u5982\u4f55\u83b7\u53d6/\u6253\u5370\u5b8c\u6574\u4ee3\u7406\u8def\u5f84?", 
      "id": "https://www.v2ex.com/t/1120024"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/dabao", 
        "name": "dabao", 
        "avatar": "https://cdn.v2ex.com/avatar/b8db/b975/103604_large.png?m=1456281006"
      }, 
      "url": "https://www.v2ex.com/t/1118432", 
      "title": "Nginx \u56db\u5c42\u53cd\u4ee3 QUIC \u5982\u4f55\u4f20\u9012\u5ba2\u6237\u7aef IP", 
      "id": "https://www.v2ex.com/t/1118432", 
      "date_published": "2025-03-14T06:18:13+00:00", 
      "content_html": "<p>\u4f7f\u7528 nginx \u7684\u56db\u5c42\u4ee3\u7406\u76d1\u542c 443 \u7aef\u53e3\uff0c\u53cd\u4ee3\u540e\u7aef 6443 \u7aef\u53e3\u7ad9\u70b9\u3002\n\u901a\u8fc7<code>http2</code>\u53ef\u4ee5\u6b63\u5e38\u83b7\u53d6\u5230\u5ba2\u6237\u7aef IP \uff0c\u901a\u8fc7 h3<code>quic</code>\u8fde\u63a5\u5219\u65e0\u6cd5\u83b7\u53d6\u5230\u771f\u5b9e\u7684\u5ba2\u6237\u7aef IP \uff0c\u53ea\u80fd\u83b7\u53d6\u5230 127.0.0.1 \u3002</p>\n<p>\u8bf7\u95ee\u5404\u4f4d\u5927\u4f6c\uff0c\u5728\u4fdd\u6301\u4f7f\u7528\u56db\u5c42\u53cd\u4ee3\u7684\u524d\u63d0\u4e0b\uff0c\u5982\u4f55\u914d\u7f6e\u53ef\u4ee5\u901a\u8fc7<code>quic</code>\u83b7\u53d6\u5230\u5ba2\u6237\u7aef IP \u3002</p>\n<h3>\u4f7f\u7528 quic \u8fde\u63a5\u83b7\u53d6\u5230\u7684 IP</h3>\n<pre><code>REMOTE_ADDR: 127.0.0.1\nHTTP_CLIENT_IP: \u672a\u8bbe\u7f6e\nHTTP_X_FORWARDED_FOR: \u672a\u8bbe\u7f6e\nHTTP_X_REAL_IP: \u672a\u8bbe\u7f6e\nHTTP_FORWARDED: \u672a\u8bbe\u7f6e\nHTTP_FORWARDED_FOR: \u672a\u8bbe\u7f6e\nHTTP_X_FORWARDED: \u672a\u8bbe\u7f6e\n</code></pre>\n<h3>\u56db\u5c42 stream \u914d\u7f6e</h3>\n<pre><code>map $ssl_preread_server_name $name {\n    default default_backend;\n}\n\nupstream default_backend {\n    server 127.0.0.1:6443; # \u7ad9\u70b9\n}\n\nserver {\n    listen 443 reuseport;\n    listen 443 udp reuseport;\n    proxy_pass $name;\n    ssl_preread on;\n    proxy_protocol on;\n}\n</code></pre>\n<h3>\u7ad9\u70b9\u914d\u7f6e</h3>\n<pre><code>server\n{\n    listen 80;\n    listen 6443 ssl  proxy_protocol ;\n    listen 6443 quic reuseport;\n\t\t\n    http2 on;\n    server_name abc.com www.abc.com;\n    \n    index index.php index.html;\n    root /wwwroot/abc.com;\n    \n    set_real_ip_from 127.0.0.1;\n    real_ip_header proxy_protocol;\n    \n    ...\n}\n</code></pre>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/simple2025", 
        "name": "simple2025", 
        "avatar": "https://cdn.v2ex.com/gravatar/d8be1ee891483e0287a7350aae996608?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1117051", 
      "date_modified": "2025-03-09T08:50:30+00:00", 
      "content_html": "<ol>\n<li>\n<p>\u73b0\u5728\u6211\u6709\u4e00\u4e2a\u7b14\u8bb0\u672c,\u91cc\u9762\u6709\u4e2a\u865a\u62df\u673a,\u865a\u62df\u673a\u91cc\u9762\u90e8\u7f72\u4e86\u6211\u7684 sphinx \u6587\u6863.</p>\n</li>\n<li>\n<p>\u7136\u540e\u5728\u5916\u9762\u7b14\u8bb0\u672c windows \u7cfb\u7edf\u4e0a\u9762\u542f\u52a8 nginx,\u53cd\u4ee3\u865a\u62df\u673a\u7684 sphinx \u6587\u6863\u7ad9\u70b9.</p>\n</li>\n</ol>\n<p>\u7136\u540e\u6211\u7b14\u8bb0\u672c\u5f00\u673a\u4f1a\u81ea\u52a8\u542f\u52a8\u865a\u62df\u673a,nginx.</p>\n<p>\u73b0\u5728\u95ee\u9898\u6765\u4e86,\u6211\u7b14\u8bb0\u672c\u91cd\u542f,\u865a\u62df\u673a\u4e5f\u91cd\u542f\u597d\u4e86,</p>\n<p>\u6211\u5728\u53f0\u5f0f\u673a\u4e0a\u8bbf\u95ee nginx \u7684\u53cd\u4ee3\u7684 sphinx \u6587\u6863\u7ad9\u70b9,\u63d0\u793a 502?\u4e00\u5b9a\u8981\u6211\u53bb\u628a nginx \u518d\u91cd\u542f\u4e00\u4e0b,502 \u624d\u6d88,\n\u8fd9\u79cd\u95ee\u9898\u600e\u4e48\u89e3\u51b3?</p>\n<p>\u8fd8\u6709\u4e00\u4e2a\u95ee\u9898,\u6211\u7b14\u8bb0\u672c\u91cd\u542f\u540e,\u6709\u65f6\u5019\u4e00\u6bb5\u65f6\u95f4\u540e\u4f1a\u9677\u5165\u9ed1\u5c4f\u72b6\u6001,\u4f46\u662f\u6211\u660e\u660e\u8bbe\u7f6e\u4e86\u7535\u6e90\u72b6\u6001\u4e3a\u4e0d\u9ed1\u5c4f\u554a?\n\u8fd9\u79cd\u95ee\u9898\u53c8\u5982\u4f55\u89e3?</p>\n", 
      "date_published": "2025-03-09T08:08:15+00:00", 
      "title": "\u5173\u4e8e windows \u4e0b\u9762\u91cd\u542f\u4e4b\u540e nginx \u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1117051"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Gnepre", 
        "name": "Gnepre", 
        "avatar": "https://cdn.v2ex.com/gravatar/02eb6cf12ab2a87843e0f015d95964b4?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1114042", 
      "title": "\u6211\u662f\u4e0d\u662f\u53ef\u4ee5\u53cd\u5411\u4ee3\u7406\u4e2a V2EX \u7f51\u7ad9?", 
      "id": "https://www.v2ex.com/t/1114042", 
      "date_published": "2025-02-25T03:16:39+00:00", 
      "content_html": "\u8bf7\u6559\u5927\u4f6c\u4eec\u4e2a\u95ee\u9898<br />\u81ea\u5df1\u8f9b\u82e6\u8fd0\u8425\u7684\u7ad9\u70b9\u88ab\u4eba\u53cd\u5411\u4ee3\u7406,\u5982\u4f55\u907f\u514d\u81ea\u5df1\u7ad9\u70b9\u88ab\u4eba\u53cd\u5411\u4ee3\u7406?"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/vacuitym", 
        "name": "vacuitym", 
        "avatar": "https://cdn.v2ex.com/gravatar/9d2795bcfa498168b725b3b463b547c6?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1112077", 
      "date_modified": "2025-02-17T09:10:19+00:00", 
      "content_html": "<p>\u540c\u6837\u7684\u914d\u7f6e openai \u548c claude \u5c31\u6ca1\u95ee\u9898\uff1a</p>\n<pre><code class=\"language-yml\">\nlocation /xai {\n    proxy_pass  https://api.x.ai/;\n    proxy_ssl_server_name on;\n    proxy_set_header Host api.x.ai;\n    proxy_set_header Connection '';\n    proxy_http_version 1.1;\n    chunked_transfer_encoding off;\n    proxy_buffering off;\n    proxy_cache off; \n    proxy_set_header X-Forwarded-For $remote_addr;\n    proxy_set_header X-Forwarded-Proto $scheme;\n}\n\n</code></pre>\n<p>\u8bf7\u6c42\uff1a</p>\n<p><a href=\"https://chat.xxxxx.com/xai/v1/chat/completions\" rel=\"nofollow\">https://chat.xxxxx.com/xai/v1/chat/completions</a></p>\n<p>\u62a5\u9519\uff1a</p>\n<pre><code class=\"language-json\">{\n    \"code\": \"Some requested entity was not found\",\n    \"error\": \"No handler found on route. Please double check your URL and consult https://api.x.ai/docs for more information.\"\n}\n</code></pre>\n", 
      "date_published": "2025-02-17T09:09:31+00:00", 
      "title": "\u7528 nginx \u505a\u7684 xai \u7684\u8f6c\u53d1\u597d\u50cf\u4e00\u76f4\u6709\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1112077"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/coolair", 
        "name": "coolair", 
        "avatar": "https://cdn.v2ex.com/avatar/c4fe/52ac/36118_large.png?m=1691894552"
      }, 
      "url": "https://www.v2ex.com/t/1110841", 
      "date_modified": "2025-02-12T02:40:21+00:00", 
      "content_html": "\u5728 Nginx \u914d\u7f6e\u4e86\u591a\u4e2a\u7ad9\u70b9\u7684\u60c5\u51b5\u4e0b\uff0c\u5982\u679c\u6709\u4e9b\u7ad9\u70b9\u6ca1\u6709\u542f\u7528 https \uff08\u4f7f\u7528\u4e86\u901a\u914d\u7b26\u8bc1\u4e66\uff09\uff0c\u800c\u6709\u4e9b\u542f\u7528\u4e86 https \u7684\u8bdd\u3002<br /><br />\u5728\u6d4f\u89c8\u5668\u4e2d\u8bbf\u95ee\u6ca1\u6709\u542f\u7528 https \u7684\u57df\u540d\uff0c\u4f1a\u5f3a\u5236\u8df3\u8f6c\u5230 https \uff0c\u5bfc\u81f4\u89e3\u6790\u5230\u542f\u7528\u4e86 https \u7684\u7f51\u7ad9\uff0c\u800c\u4e0d\u662f\u81ea\u5df1 http \u7684\u7f51\u7ad9\u3002<br /><br />\u8fd9\u4e2a\u6709\u6ca1\u6709\u529e\u6cd5\u5728\u4e0d\u4fee\u6539\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u7684\u60c5\u51b5\u4e0b\u89e3\u51b3\uff1f", 
      "date_published": "2025-02-12T02:05:02+00:00", 
      "title": "\u8bf7\u6559\u4e00\u4e2a Nginx \u914d\u7f6e\u548c\u6d4f\u89c8\u5668\u5f3a\u5236 http \u8f6c https \u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1110841"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/lengrongec", 
        "name": "lengrongec", 
        "avatar": "https://cdn.v2ex.com/avatar/4080/c851/231666_large.png?m=1774849308"
      }, 
      "url": "https://www.v2ex.com/t/1109395", 
      "title": "nginx proxy manager ipv6 \u53cd\u4ee3\u6307\u5411\u5185\u7f51 ipv4 \u5c40\u57df\u7f51\u5730\u5740\uff0c\u8fd8\u53ef\u4ee5\u8fd9\u6837\u64cd\u4f5c\ud83e\udd14\uff1f", 
      "id": "https://www.v2ex.com/t/1109395", 
      "date_published": "2025-02-06T09:11:37+00:00", 
      "content_html": "\u867d\u7136\u77e5\u9053\u5b83\u6f0f\u6d1e\u5f88\u591a\uff0c\u4f46\u662f\u8c01\u4e0d\u56fe\u7528\u8d77\u6765\u65b9\u4fbf<br />\u5728\u5bb6\u91cc\u73a9\u5ba2\u4e91\u4e0a\u7528 docker \u90e8\u7f72\u4e86\u5b83\u548c adguard \uff1b<br />\u65e0\u610f\u95f4\u53d1\u73b0\u53ef\u4ee5\u53ea\u8981\u628a npm \u7684 docker \u7f51\u7edc\u7531 bridge \u6539\u4e3a host \u4e3b\u673a\u6a21\u5f0f\uff0c\u5982\u679c\u4f7f\u7528 ddns \u89e3\u6790\u5230 ipv6 \uff0c\u5728\u505a\u53cd\u4ee3\u7684\u65f6\u5019\u5185\u7f51\u53ef\u4ee5\u4f7f\u7528\u5c40\u57df\u7f51\u7684 ipv4 \u5730\u5740\u3002\u8fd9\u6837\u4e0d\u5f71\u54cd\u5916\u7f51\u7684 ipv6 \u8bbf\u95ee\u3002\u53ef\u4ee5\u7cbe\u51c6\u8bbf\u95ee\u5185\u7f51\u670d\u52a1"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/yumerdev93", 
        "name": "yumerdev93", 
        "avatar": "https://cdn.v2ex.com/gravatar/74f42fe2d4f5f39f05b82e0bf0564dfd?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1106475", 
      "title": "\u5173\u4e8e Nginx \u53cd\u5411\u4ee3\u7406\u6027\u80fd\u8c03\u4f18\u7684\u95ee\u9898\uff0c\u6c42\u6307\u5bfc\ud83d\ude4f", 
      "id": "https://www.v2ex.com/t/1106475", 
      "date_published": "2025-01-20T06:32:25+00:00", 
      "content_html": "<p>\u4ee5\u4e0b\u73af\u5883\u5747\u5728 docker \u4e2d\uff0cnginx \u7528 host network \u3002</p>\n<p>\u6211\u73b0\u5728\u5728\u7528 <code>Nginx</code> \u4ee3\u7406\u4e00\u4e2a <code>Fastapi</code> \u5e94\u7528\uff0c\u4ece\u5c40\u57df\u7f51\u5185\u5176\u4ed6\u673a\u5668\u901a\u8fc7<code>wrk</code>\u76f4\u63a5\u538b\u6d4b\u540e\u7aef\u5e94\u7528\u7684\u4e00\u4e2a\u7b80\u5355\u8fd4\u56de\uff0c\u5728 8 \u6838 CPU \u4e0a\u6709 4w QPS \uff0c\u4f46\u901a\u8fc7 Nginx \u4ee3\u7406 Fastapi \u540e\uff0cQPS \u53ea\u6709\u79bb\u8c31\u7684 2-3k \uff0c\u6211\u770b\u540e\u7aef\u673a\u5668 CPU \u662f\u6ca1\u6709\u8dd1\u6ee1\u7684\uff0cNginx CPU \u53cd\u800c\u662f\u5360\u7528\u6ee1\u4e86\u3002</p>\n<p>\u538b\u6d4b\u7ed3\u679c\uff1a</p>\n<pre><code>  2 threads and 200 connections\n  Thread Stats   Avg      Stdev     Max   +/- Stdev\n    Latency   115.25ms   86.47ms 712.60ms   45.32%\n    Req/Sec     0.91k     1.01k    3.74k    87.67%\n  27096 requests in 15.02s, 9.25MB read\nRequests/sec:   1804.16\nTransfer/sec:    630.75KB\n</code></pre>\n<p>\u4e0a\u9762\u64cd\u4f5c\u5747\u5728 3 \u53f0\u5c40\u57df\u7f51\u5185\u673a\u5668\uff0c\u5b9e\u9645\u4e0a\u5728 Nginx \u673a\u5668\u901a\u8fc7 curl \u8bbf\u95ee\u540e\u7aef\u4e5f\u53ea\u662f 2ms \u7684\u5ef6\u8fdf\uff0c\u8bf7\u6c42\u8fd9\u95ee\u9898\u662f\u51fa\u5728\u54ea\u513f\u4e86\u5462\uff1f Nginx \u4f7f\u7528\u7684\u662f\u9ed8\u8ba4\u914d\u7f6e\uff0c\u6ca1\u7ecf\u8fc7\u4f18\u5316\u3002</p>\n<p>\u53e6\u5916\uff0c\u901a\u8fc7 docker \u90e8\u7f72 traefik \u53cd\u5411\u4ee3\u7406\u540e\u538b\u6d4b\uff0c\u540e\u7aef\u80fd\u6b63\u5e38\u8dd1\u6ee1 CPU \uff0c\u5ef6\u8fdf\u4e5f\u662f\u6b63\u5e38\u7684\u51e0\u6beb\u79d2\u4e4b\u5185\uff0c\u5c31\u662f traefik CPU \u5360\u7528\u4e5f\u633a\u5927\u7684\uff0c\u6309\u9053\u7406\u6765\u8bf4 Nginx \u6027\u80fd\u5e94\u8be5\u5f3a\u4e8e traefik \u5427\uff1f</p>\n<p>\u8fd9\u4e2a\u95ee\u9898\u56f0\u6270\u4e86\u6211\u597d\u51e0\u5929\u4e86\uff0c\u95ee GPT Nginx \u4f18\u5316\u76f8\u5173\u7684\u4e5f\u53ea\u662f\u53cd\u590d\u56de\u7b54\u94fe\u63a5\u6570\u3001keep alive \u8fd9\u4e9b\uff0c\u90fd\u8bd5\u8fc7\u4e86\u6ca1\u4f5c\u7528\uff0c\u8bf7\u95ee\u5404\u4f4d\u5927\u54e5 Nginx \u5e94\u8be5\u600e\u4e48\u914d\u7f6e\u4f18\u5316\u5462\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/exqibao", 
        "name": "exqibao", 
        "avatar": "https://cdn.v2ex.com/gravatar/1a4d90c901c0e40b30f1d50929ca7b36?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1104759", 
      "date_modified": "2025-01-13T08:54:52+00:00", 
      "content_html": "<p>\u6839\u636e\u8bf7\u6c42\u5934\u5206\u53d1</p>\n<p>loc: /aa ==&gt; <a href=\"http://127.0.0.1:28080/aa\" rel=\"nofollow\">http://127.0.0.1:28080/aa</a></p>\n<p>pro: /aa ==&gt; <a href=\"http://127.0.0.1:8011/api/\" rel=\"nofollow\">http://127.0.0.1:8011/api/</a></p>\n<p>\u5176\u5b83: /aa ==&gt; <a href=\"http://127.0.0.1:8022/api/\" rel=\"nofollow\">http://127.0.0.1:8022/api/</a></p>\n<p>\u5927\u4f6c\u4eec\uff0c\u539f\u6765\u53ea\u6709 loc \u548c\u5176\u5b83\u4e00\u5207\u6b63\u5e38\uff0c\u52a0\u4e0a pro \u5c31\u4e0d\u884c\u4e86\uff0c\u5982\u4f55\u914d\u7f6e\u53ef\u4ee5\u5b9e\u73b0\u8fd9\u4e2a\u6548\u679c\u5417\uff1f\u4f3c\u4e4e if \u91cc\u9762 proxy_pass \u4e0d\u80fd\u6709/api/\u5730\u5740</p>\n<pre><code>\tlocation /aa {\n\t\tproxy_http_version 1.1;\n\t\tproxy_set_header Upgrade $http_upgrade;\n\t\tproxy_set_header Connection \"upgrade\";\n\t\tproxy_set_header X-real-ip $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $remote_addr;\n\t\tif ($http_environment_name = \"loc\" ) {\n\t\t\tproxy_pass http://127.0.0.1:28080;\n\t\t\tbreak;\n\t\t}\n\t\tif ($http_environment_name = \"pro\" ) {\n\t\t\tproxy_pass http://127.0.0.1:8011/api/;\n\t\t\tbreak;\n\t\t}\n\t\tproxy_pass http://127.0.0.1:8022/api/;\n\t}\n</code></pre>\n", 
      "date_published": "2025-01-13T08:46:39+00:00", 
      "title": "nginx \u914d\u7f6e\u6839\u636e\u8bf7\u6c42\u5934\u5206\u53d1\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1104759"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/kyonn", 
        "name": "kyonn", 
        "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1104384", 
      "date_modified": "2025-01-11T11:46:55+00:00", 
      "content_html": "<p>\u6700\u8fd1\u770b\u5230\u4e0d\u5c11 nginx-proxy-manager \u7684\u63a8\u8350, \u5b83\u80fd\u4e0d\u80fd\u652f\u6301 <a href=\"https://github.com/nginx-proxy/nginx-proxy\" rel=\"nofollow\">https://github.com/nginx-proxy/nginx-proxy</a> \u63d0\u4f9b\u7684\u529f\u80fd, \u53ea\u8981\u5728\u5176\u4ed6 docker-compose.yml \u4e2d\u6307\u5b9a VIRTUAL_HOST \u548c VIRTUAL_PORT, \u5c31\u80fd\u4e8c\u7ea7\u57df\u540d\u53cd\u4ee3\u5230\u5176\u4ed6 docker, \u751a\u81f3\u662f\u53cd\u4ee3\u591a\u4e2a docker \u5185\u90e8\u7aef\u53e3.</p>\n<p>nginx-proxy-manager \u76f8\u6bd4\u4e8e nginx-proxy \u6709\u4ec0\u4e48\u4f18\u52bf\u5417? nginx-proxy-manager \u80fd\u81ea\u52a8\u5e2e\u5176\u4ed6 docker \u53cd\u4ee3\u7aef\u53e3\u5417?</p>\n", 
      "date_published": "2025-01-11T11:46:24+00:00", 
      "title": "\u7528\u8fc7 nginx-proxy-manager \u8bf7\u8fdb, \u54a8\u8be2\u4e2a\u95ee\u9898.", 
      "id": "https://www.v2ex.com/t/1104384"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/AndreasG", 
        "name": "AndreasG", 
        "avatar": "https://cdn.v2ex.com/gravatar/b7b9aaf89d0cd99e801151b80122904e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1103834", 
      "date_modified": "2025-01-09T03:16:00+00:00", 
      "content_html": "<p>\u6211\u73b0\u5728\u6709\u4e09\u4e2a\u5bb9\u5668\u5f00\u7740\uff0c\u8def\u7531\u5668\u5f00\u653e\u4e86\u4e09\u4e2a\u7aef\u53e3\uff0c\n\u6211\u60f3\u80fd\u4e0d\u80fd\u5f00\u653e\u4e00\u4e2a\u7aef\u53e3\u7528\u62fc\u63a5 url \u65b9\u5f0f\u8f6c\u53d1\u5230\u4e0d\u540c\u7684\u5185\u7f51\u670d\u52a1\u4e0b\uff0c</p>\n<pre><code class=\"language-conf\">server {  \n    listen 10086 ssl;  \n    server_name abc.com;\n        location / {  \n        proxy_pass http://192.168.0.100:10086;\n        proxy_set_header Host $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 $scheme;\n        }\n\n\n        location /book {  \n        proxy_pass http://192.168.0.100:10010;\n        proxy_set_header Host $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 $scheme;\n        }\n    }\n</code></pre>\n<p>\u7c7b\u4f3c\u8fd9\u6837\u914d\u7f6e\u4e86 nginx \u4e4b\u540e\n\u76f4\u63a5\u8bbf\u95ee <a href=\"http://abc.com:10086\" rel=\"nofollow\">abc.com:10086</a> \u7aef\u53e3\u8bbf\u95ee\u5168\u90e8\u6ca1\u95ee\u9898\n\u4f46\u662f\u8f6c\u53d1\u7684\u7b2c\u4e8c\u4e2a\u7aef\u53e3</p>\n<pre><code class=\"language-url\">abc.com:10086/book\n</code></pre>\n<p>\u5e76\u4e0d\u80fd\u6210\u529f\u8f6c\u53d1\u5230 192.168.0.100:10010\n\u6d4f\u89c8\u5668\u8c03\u8bd5\u53d1\u73b0\u4f7f\u7528  <a href=\"http://abc.com:10086/book\" rel=\"nofollow\">abc.com:10086/book</a>\n\u53d1\u51fa\u7684\u8bf7\u6c42\u4e2d\ncss js \u4e4b\u7c7b\u7684\u90fd\u662f</p>\n<pre><code class=\"language-url\">abc.com:10086/static/?.css\nabc.com:10086/static/?.js\n</code></pre>\n<p>\u800c\u5e76\u6ca1\u6709\u5230</p>\n<pre><code class=\"language-url\">abc.com:10086/book/static/?.css\nabc.com:10086/book/static/?.js\n</code></pre>\n<p>\u72b6\u6001\u90fd\u662f 404 \u4e86\n\u95ee\u4e86\u4e00\u4e0b gpt \u8bf4\u662f\u9700\u8981\u627e\u5230\u771f\u5b9e\u7684\u9759\u6001\u8d44\u6e90\u5730\u5740\uff0c\u8fd9\u4e2a\u5bb9\u5668\u7684\u8bdd\u600e\u4e48\u641e\u5462\uff1f\u8fd8\u662f\u8bf4\u6211\u7684 nginx \u9700\u8981\u914d\u7f6e\u5176\u4ed6\u914d\u7f6e\u9879\u624d\u53ef\u4ee5\u5462\uff0c\u6c42\u5927\u4f6c\u4eec\u5e2e\u52a9</p>\n", 
      "date_published": "2025-01-09T03:15:21+00:00", 
      "title": "\u6211\u6709\u4e00\u4e2a\u7aef\u53e3\u8f6c\u53d1\u95ee\u9898\uff0c\u6c42\u5927\u4f6c\u4eec\u534f\u52a9", 
      "id": "https://www.v2ex.com/t/1103834"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ShimaKazeLiu", 
        "name": "ShimaKazeLiu", 
        "avatar": "https://cdn.v2ex.com/avatar/21a4/67f3/661144_large.png?m=1755567618"
      }, 
      "url": "https://www.v2ex.com/t/1099518", 
      "title": "\u4f7f\u7528 Nginx \u4ee3\u7406 Emby \u670d\u52a1\u5668\uff0c\u6d4f\u89c8\u5668\u53ef\u4ee5\u8bbf\u95ee\u4f46\u662f\u5ba2\u6237\u7aef\u8fde\u4e0d\u4e0a", 
      "id": "https://www.v2ex.com/t/1099518", 
      "date_published": "2024-12-23T01:47:09+00:00", 
      "content_html": "\u6211\u5bb6\u91cc\u7684\u73af\u5883\u662f\u6ca1\u5f97\u516c\u7f51\u7684\uff0c\u6211\u5c31\u53bb\u641e\u4e86\u53f0\u6709\u516c\u7f51\u7684\u670d\u52a1\u5668\uff0c\u7136\u540e\u90a3\u4e2a\u670d\u52a1\u5668\u901a\u8fc7 zerotier \u8fde\u63a5\u5230\u6211\u5bb6\u5185\u7f51\uff0c\u8fd9\u4e2a\u670d\u52a1\u5668\u4f7f\u7528 Nginx \u6765\u8fde\u63a5\u5230 Emby \u3002<br /><br />\u6574\u4e2a\u94fe\u8def\u5c31\u662f\u6211\u5bb6-&gt;\u670d\u52a1\u5668-&gt;\u5916\u7f51<br /><br />\u7136\u540e\u7f51\u5740\u662f\u963f\u91cc\u4e91\u4e70\u7684\uff0cdns \u89e3\u6790\u5230\u4e86 cf<br /><br />cf \u6dfb\u52a0\u4e86\u4e00\u4e2a emby \u7684 dns \u8bb0\u5f55 \u6307\u5411\u4e86\u8fd9\u4e2a\u670d\u52a1\u5668<br /><br />\u7136\u540e\u5728 nginx proxy manager \u914d\u4e86\u4e00\u6761 ssl \u8bc1\u4e66\u7528\u7684 Let's Encrypt\t<br /><br />\u73b0\u5728\u7684\u7ed3\u679c\u5c31\u662f\u6211\u901a\u8fc7\u7f51\u5740\u7528\u6d4f\u89c8\u5668\u8bbf\u95ee\u6211\u5bb6\u7684 Emby \u662f\u6ca1\u95ee\u9898\u7684\uff0c\u4f46\u662f\u6211\u7528 APP \u8bbf\u95ee\u90a3\u5c31\u8fde\u63a5\u4e0d\u4e0a<br /><br />\u8fd9\u4e2a\u662f\u4e0d\u662f APP \u7684\u95ee\u9898\uff0c\u6709\u6ca1\u6709 Emby \u7684\u5927\u4f6c\u5e2e\u6211\u770b\u770b"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ezekiel222", 
        "name": "ezekiel222", 
        "avatar": "https://cdn.v2ex.com/gravatar/f2fb069a18b76766600a176071138a51?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1099224", 
      "date_modified": "2024-12-21T02:30:34+00:00", 
      "content_html": "<p>npm \u7528 docker-compose \u90e8\u7f72\u5728 openwrt \u4e0a\uff0cnetwork \u662f bridge \uff08\u7f51\u5173 172.17.0.1 \uff09\u3002npm \u53ef\u4ee5\u53cd\u4ee3\u540c\u7f51\u5173\u7684 ddns-go \u7b49 docker \u5bb9\u5668\uff08\u7f51\u5173 172.17.0.1 \uff09\uff0c\u548c openwrt \uff08\u5730\u5740 192.168.66.1 \uff09\uff0c\u4f46\u662f\u4e0d\u80fd\u53cd\u4ee3\u7fa4\u6656 nas \uff08\u5730\u5740 192.168.66.4 \uff09\uff0c\u662f\u56e0\u4e3a npm \u7528 bridge \u6ca1\u7528 host \u7684\u539f\u56e0\u5417\uff1f\u5982\u679c\u662f\uff0c\u8bf7\u95ee\u662f\u5426\u6709\u4e0d\u6539\u53d8 bridge \u80fd\u53cd\u4ee3 nas \u7684\u65b9\u6cd5\uff1f</p>\n", 
      "date_published": "2024-12-21T02:21:12+00:00", 
      "title": "\u5c0f\u767d\u5728\u4f7f\u7528 Nginx proxy manager \u9047\u5230\u95ee\u9898\uff0c\u8bf7\u5927\u4f6c\u4eec\u6307\u6559\u3002", 
      "id": "https://www.v2ex.com/t/1099224"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/andyfan", 
        "name": "andyfan", 
        "avatar": "https://cdn.v2ex.com/avatar/74b4/ec7d/161368_large.png?m=1734348969"
      }, 
      "url": "https://www.v2ex.com/t/1097996", 
      "date_modified": "2024-12-16T11:47:47+00:00", 
      "content_html": "<p>\u6211\u60f3\u81ea\u5efa\u4e00\u4e2a docker \u7684\u955c\u50cf\u6e90, \u5199\u4e86\u4e2a\u914d\u7f6e\u6587\u4ef6\u53cd\u4ee3 <a href=\"http://registry-1.docker.io\" rel=\"nofollow\">registry-1.docker.io</a>, \u540c\u65f6\u5e0c\u671b\u8bbf\u95ee\u8fd9\u4e2a\u57df\u540d\u6839\u8def\u5f84\u7684\u65f6\u5019\u4e0d\u8981\u53cd\u4ee3, \u8fd4\u56de\u7f51\u7ad9\u76ee\u5f55\u4e0b\u7684 index.html</p>\n<p>\u4f46\u6211\u7684\u914d\u7f6e\u6587\u4ef6\u6ca1\u6709\u6309\u7167\u9884\u671f\u90a3\u6837\u5de5\u4f5c, \u76f4\u63a5\u8bbf\u95ee\u57df\u540d\u6839\u8def\u5f84\u7684\u65f6\u5019\u8fd8\u662f\u53cd\u4ee3\u5230\u4e86 <a href=\"http://registry-1.docker.io\" rel=\"nofollow\">registry-1.docker.io</a> \u5bfc\u81f4\u8fd4\u56de 404, \u5e0c\u671b\u6709\u719f\u6089 nginx \u7684\u8001\u54e5\u5e2e\u5fd9\u770b\u770b, \u8fd9\u8981\u600e\u4e48\u4fee\u6539?</p>\n<p>\u6211\u7684 server \u914d\u7f6e\u5982\u4e0b</p>\n<pre><code class=\"language-conf\">\tlocation = / {\n\t\tadd_header Cache-Control private;\n\t\talias /var/www/html/;\n\t\tindex index.html;\n\t}\n\t \n\tlocation / {\n\t\t# Docker hub \u7684\u5b98\u65b9\u955c\u50cf\u4ed3\u5e93\n\t\tproxy_pass https://registry-1.docker.io;  \n\t\tproxy_set_header Host registry-1.docker.io;\n\t\tproxy_set_header X-Real-IP $remote_addr;\n\t\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\t\tproxy_set_header X-Forwarded-Proto $scheme;\n\t\t# \u5173\u95ed\u7f13\u5b58             \n\t\tproxy_buffering off;\n\t\t# \u8f6c\u53d1\u8ba4\u8bc1\u76f8\u5173\n\t\tproxy_set_header Authorization $http_authorization;\n\t\tproxy_pass_header  Authorization;\n\t\t# \u5bf9 upstream \u72b6\u6001\u7801\u68c0\u67e5\uff0c\u5b9e\u73b0 error_page \u9519\u8bef\u91cd\u5b9a\u5411\n\t\tproxy_intercept_errors on;\n\t\trecursive_error_pages on;\n\t\t# \u6839\u636e\u72b6\u6001\u7801\u6267\u884c\u5bf9\u5e94\u64cd\u4f5c\uff0c\u4ee5\u4e0b\u4e3a 381 \u3001302 \u3001387 \u72b6\u6001\u7801\u90fd\u4f1a\u89e6\u53d1\n\t\terror_page 301 302 307 = @handle_redirect;\n\t}\n</code></pre>\n", 
      "date_published": "2024-12-16T11:46:35+00:00", 
      "title": "\u8bf7\u6559\u4e0b nginx \u53cd\u4ee3\u914d\u7f6e", 
      "id": "https://www.v2ex.com/t/1097996"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/gotonull", 
        "name": "gotonull", 
        "avatar": "https://cdn.v2ex.com/gravatar/6b0065b366c96d0c61a592b5fa49c4a3?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1095330", 
      "title": "nginx \u914d\u7f6e\u95ee\u9898\u6c42\u89e3\u7b54", 
      "id": "https://www.v2ex.com/t/1095330", 
      "date_published": "2024-12-05T12:11:58+00:00", 
      "content_html": "<p><strong>\u95ee\u9898\u63cf\u8ff0</strong>\uff1aa \u670d\u52a1\u5668\u7684 nginx \u670d\u52a1\u4f1a\u5c06 <code>/aisp/approval/</code> \u8def\u5f84\u7684\u8bf7\u6c42\u8f6c\u53d1\u7ed9\u6211\uff0c\u6211\u6536\u5230\u8bf7\u6c42\u540e\u6839\u636e<code>user-agent</code>\u5224\u65ad\u662f\u79fb\u52a8\u7aef\u8fd8\u662f pc \u7aef\u8bf7\u6c42\uff0c\u5982\u679c\u4e3a\u79fb\u52a8\u7aef\u7684\uff0c\u5219\u53bb\u5f53\u524d\u670d\u52a1\u5668\u7684<code>/home/centos/web/h5</code>\u76ee\u5f55\u4e0b\u54cd\u5e94\u5bf9\u5e94\u7684\u9759\u6001\u6587\u4ef6\u3002\u5982\u679c\u662f<code>/aisp/approval/api/</code>\u8def\u5f84\u4e0b\u7684\u8bf7\u6c42\u5219\u8bf7\u6c42\u540e\u7aef\u670d\u52a1\uff0c\u5f53\u524d\u7684\u914d\u7f6e\uff1a</p>\n<pre><code>server {\n        listen 9999;\n        server_name localhost;\n\n        location /aisp/approval/ {\n            if ($is_mobile = 0) {\n                rewrite ^/aisp/approval/(.*)$ https://b.com/$1 permanent;\n            }\n            alias /home/centos/web/h5/;\n            try_files $uri $uri/ /index.html;\n        }\n\n        location  /aisp/approval/api/ {\n            limit_conn perip 1000;\n            proxy_pass http://10.156.166.23:9088/;\n            proxy_redirect off;\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 Host $host;\n            client_max_body_size 600M;\n            client_body_buffer_size 512k;\n        }\n    }\n\n</code></pre>\n<p>\u73b0\u5728\u7684\u95ee\u9898\u662f\u901a\u8fc7\u79fb\u52a8\u7aef\u8bf7\u6c42<code><a href=\"http://a.com/aisp/approval/workOrder/orderHandlerDetails\" rel=\"nofollow\">a.com/aisp/approval/workOrder/orderHandlerDetails</a></code>,error.log \u4f1a\u62a5\uff1a</p>\n<pre><code>open() \"/usr/local/nginx/html/home/centos/supervision/web/h5/index.html\" failed (2: No such file or directory)\n</code></pre>\n<p>/usr/local/nginx/html \u662f\u6211 nginx \u7684\u5b89\u88c5\u76ee\u5f55\uff0c\u6211\u8981\u5982\u4f55\u914d\u7f6e\u624d\u80fd\u5728\u8bf7\u6c42 <a href=\"http://a.com/aisp/approval/workOrder/\u65f6\u54cd\u5e94/home/centos/supervision/web/h5/\u76ee\u5f55\u4e0b\u7684\" rel=\"nofollow\">a.com/aisp/approval/workOrder/\u65f6\u54cd\u5e94/home/centos/supervision/web/h5/\u76ee\u5f55\u4e0b\u7684</a> index.html</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/jalena", 
        "name": "jalena", 
        "avatar": "https://cdn.v2ex.com/gravatar/b966aaabe36d4274eba28ef301495149?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1095168", 
      "title": "Nginx \u6d41\u91cf\u5f02\u5e38\uff0c\u8bf7\u5927\u4f6c\u652f\u62db~", 
      "id": "https://www.v2ex.com/t/1095168", 
      "date_published": "2024-12-05T02:59:08+00:00", 
      "content_html": "<p>\u4e4b\u524d\u4e00\u76f4\u597d\u597d\u7684\uff0c\u4eca\u5929\u7a81\u7136\u6536\u5230\u6d41\u91cf\u544a\u8b66\u3002</p>\n<p>\u4f7f\u7528 NetHogs \u67e5\u770b\u6d41\u91cf\u53d1\u73b0 unknown TCP \u7684 RECEIVED \u4e00\u76f4\u5c45\u9ad8\u4e0d\u4e0b\uff0c\u505c\u6389 docker \u5185\u7684 nginx \u5c31\u6b63\u5e38\u4e86\uff0c\u76ee\u524d\u53ea\u653e\u4e86\u4e00\u4e2a\u7a7a\u7684\u9875\u9762\u8fd9\u4e2a\u6d41\u91cf\u4e5f\u5f88\u9ad8\u3002</p>\n<p>\u8bf7\u5927\u4f6c\u652f\u652f\u62db\uff0c\u5982\u4f55\u6392\u67e5\u5462\u3002\u7cfb\u7edf\u662f debian12 \uff0c\u7a0b\u5e8f\u90fd\u5b89\u88c5\u5728 docker \u5185</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/raysonlu", 
        "name": "raysonlu", 
        "avatar": "https://cdn.v2ex.com/gravatar/f49e53bf69e1be6aad8d4cb7f6ed6d74?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1094763", 
      "title": "nginx \u8bfb\u53d6 ssl \u8bc1\u4e66\u7684\u6743\u9650\u95ee\u9898\u8bf7\u6559", 
      "id": "https://www.v2ex.com/t/1094763", 
      "date_published": "2024-12-03T11:40:42+00:00", 
      "content_html": "nginx \u662f\u7528 nobody \u8fd0\u884c\uff0c\u53e6\u5916\u6709\u4e00\u4e2a\u7528\u6237 petter \u4e3b\u8981\u662f\u7ef4\u62a4\u4e00\u5927\u5806\u8bc1\u4e66\uff08\u516c\u94a5\u548c\u79c1\u94a5\uff09\uff0c\u6211\u4ee5\u4e3a\uff0c\u6839\u636e linux \u7684\u6587\u4ef6\u6743\u9650\u8bfb\u53d6\u89c4\u5219\uff0c\u5efa\u7acb\u4e00\u4e2a ssl \u7528\u6237\u7ec4\uff0c\u8ba9 nobody \u548c petter \u90fd\u52a0\u5165\u8fdb\u53bb\uff0c\u518d\u628a\u6574\u4e2a\u8bc1\u4e66\u5b58\u653e\u76ee\u5f55\u8bbe\u7f6e\u4e3a petter:ssl \uff0c\u5c31\u53ef\u4ee5\u8ba9 nginx \u8bfb\u53d6\u3002<br /><br />\u4f46\u5b9e\u6d4b\u5e76\u4e0d\u80fd\uff0cnginx \u5904\u7406\u8bbf\u95ee\u89e6\u53d1\u8bfb\u53d6 ssl \u8bc1\u4e66\u7684\u65f6\u5019\uff0c\u4f1a\u62a5\u9519\u65e0\u6743\u9650\u8bfb\u53d6 ssl \u8bc1\u4e66\uff0c\u6478\u7d22\u4e86\u4e00\u756a\u540e\uff0c\u53d1\u73b0\u53ea\u6709\u628a\u8bc1\u4e66\u62e5\u6709\u8005\u6539\u4e3a nobody \uff0cnginx \u624d\u80fd\u8bfb\u53d6\u5e76\u6b63\u5e38\u5904\u7406\u8bbf\u95ee\u3002<br /><br />\u201c\u8fdb\u7a0b\u7684\u62e5\u6709\u8005\u53ea\u80fd\u8bfb\u53d6\u81ea\u5df1\u62e5\u6709\u7684\u8bc1\u4e66\u201d\uff1f\u8fd9\u4e0e\u7406\u89e3\u7684 linux \u6587\u4ef6\u6743\u9650\u8bfb\u53d6\u903b\u8f91\u6709\u70b9\u4e0d\u4e00\u6837\uff0c\u8fd9\u662f linux \u5185\u6838\u5bf9\u8fd9\u79cd\u64cd\u4f5c\u7684\u7279\u6b8a\u5904\u7406\uff0c\u8fd8\u662f nginx \u81ea\u5df1\u5b9a\u7684\u89c4\u5219\uff1f"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/maninnet", 
        "name": "maninnet", 
        "avatar": "https://cdn.v2ex.com/gravatar/39526d5c2fdb6b5a2c1de4ccd603fdbd?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1094593", 
      "title": "\u8bf7\u95ee\u4e00\u4e2a\u4e8c\u7ea7\u57df\u540d\u5982\u4f55\u914d\u7f6e\u53ef\u4ee5\u8bbf\u95ee\u591a\u4e2a http \u670d\u52a1\uff1f", 
      "id": "https://www.v2ex.com/t/1094593", 
      "date_published": "2024-12-03T02:29:40+00:00", 
      "content_html": "<p>\u6211\u624b\u4e0a\u53ea\u6709\u4e00\u4e2a\u4e8c\u7ea7\u57df\u540d <a href=\"http://sub.abc.com\" rel=\"nofollow\">sub.abc.com</a> \uff0c\u4f46\u6211\u6709\u4e00\u4e2a alist \u548c nas \u7684 http \u670d\u52a1\u60f3\u901a\u8fc7\u8fd9\u4e2a\u4e8c\u7ea7\u57df\u540d\u8fdb\u884c\u8bbf\u95ee\uff0c\u6bd4\u5982 <a href=\"http://sub.abc.com/alist\" rel=\"nofollow\">sub.abc.com/alist</a> \u548c <a href=\"http://sub.abc.com/nas\" rel=\"nofollow\">sub.abc.com/nas</a> \u5206\u522b\u8bbf\u95ee alist \u548c nas \u7684\u7ba1\u7406\u540e\u53f0\uff0c\u6211\u5c1d\u8bd5\u901a\u8fc7 nginx \u914d\u7f6e location \u7684 rewrite \u548c sub_filter \u90fd\u6ca1\u529e\u6cd5\u89e3\u51b3\uff0c\u8bf7\u95ee\u6709\u4ec0\u4e48\u89e3\u51b3\u529e\u6cd5\u5417\uff1f</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/AndreasG", 
        "name": "AndreasG", 
        "avatar": "https://cdn.v2ex.com/gravatar/b7b9aaf89d0cd99e801151b80122904e?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1093382", 
      "title": "\u914d\u7f6e\u8bc1\u4e66\u76f8\u5173\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1093382", 
      "date_published": "2024-11-28T06:17:08+00:00", 
      "content_html": "<h3>\u624b\u4e0a\u7684\u8d44\u6e90</h3>\n<ol>\n<li>\u6211\u5bb6\u53ea\u6709\u4e00\u6761\u5bb6\u7528\u5bbd\u5e26\u610f\u5473\u7740\u6211\u65e0\u6cd5\u4f7f\u7528 80 \u3001443 \u7aef\u53e3</li>\n<li>\u5bb6\u91cc\u662f\u52a8\u6001 ip \uff0c\u5e26 ipv4 \u516c\u7f51</li>\n<li>\u516c\u7f51\u8bbf\u95ee\u7684\u65b9\u6cd5\uff1a\u4f7f\u7528\u4e86 tplink \u8def\u7531\u5668\u81ea\u5e26\u7684\u7684 tpddns \u76f4\u63a5\u751f\u6210\u7684\u57df\u540d</li>\n<li>\u7aef\u53e3\u8f6c\u53d1\u4f7f\uff1a\u7531\u4e8e\u5bbd\u5e26\u539f\u751f\u652f\u6301\u516c\u7f51\uff0c\u6240\u4ee5\u76f4\u63a5\u5f00\u653e\u7684\u7aef\u53e3</li>\n<li>\u76ee\u524d\u5728\u7528\u7684\u516c\u7f51\u8bbf\u95ee\u65b9\u5f0f\uff1a \u56e0\u4e3a tpddns \u7684\u57df\u540d\u6709\u70b9\u957f\u7528\u7740\u9ebb\u70e6\uff0c\u800c\u521a\u597d\u6211\u963f\u91cc\u4e91\u4e0a\u8fd8\u6709\u4e2a\u95f2\u7f6e\u7684\u57df\u540d\uff0c\u76ee\u524d\u662f\u76f4\u63a5\u89e3\u6790\u5230 tpddns \u57df\u540d\u4e0a\u7528\u4e86</li>\n<li>\u6211\u5728\u963f\u91cc\u4e91\u7533\u8bf7\u4e86\u514d\u8d39\u7684 3 \u6708\u6709\u6548\u671f\u8bc1\u4e66</li>\n<li>\u5bb6\u91cc Esxi \u5f00\u4e86\u4e00\u4e2a\u7fa4\u6656\u548c\u4e24\u4e2a linux \u865a\u62df\u673a</li>\n</ol>\n<h3>\u76ee\u524d\u7684\u9700\u6c42</h3>\n<pre><code>\u6211\u60f3\u5b9e\u73b0\u5728\u4e00\u53f0 Linux \u865a\u62df\u673a\u4e0a\u914d\u7f6e nginx \uff0c\u7528\u4e8e\u4ee3\u7406\u5bb6\u91cc\u8fd9\u4e09\u53f0\u865a\u62df\u673a\u4e0a\u7684\u670d\u52a1\uff0c\u53ef\u4ee5\u5b9e\u73b0 https \u8bbf\u95ee\n</code></pre>\n<h3>\u76ee\u524d\u9047\u5230\u7684\u95ee\u9898</h3>\n<ol>\n<li>\u6211\u7533\u8bf7\u7b7e\u53d1\u7684\u65f6\u5019\u4f7f\u7528\u4e86\u95f2\u7f6e\u7684\u963f\u91cc\u4e91\u57df\u540d\uff0c\u79d2\u901a\u8fc7\uff0c\u4f46\u662f\u914d\u7f6e\u4e86 nginx \u4e4b\u540e\u8bbf\u95ee\u4e0d\u901a\uff08\u6709\u53ef\u80fd\u662f\u6ca1\u914d\u7f6e\u597d\uff0c\u6216\u8005\u662f\u56e0\u4e3a\u4e8c\u6b21\u89e3\u6790\u7684\u57df\u540d\uff0c\u5230\u8fbe tpddns \u57df\u540d\u7684\u65f6\u5019\u5c31\u5931\u6548\u4e86\uff0c\u8fd9\u90e8\u5206\u6ca1\u600e\u4e48\u6d4b\u8bd5\uff0c\u6628\u665a\u521a\u7533\u8bf7\u7684\uff09</li>\n<li>tpddns \u4f5c\u4e3a\u57df\u540d\u7533\u8bf7\u963f\u91cc\u4e91\u7b7e\u53d1\u7684\u65f6\u5019\u88ab\u62d2\u7edd\u4e86\uff0c\u539f\u56e0\u8c8c\u4f3c\u662f\u56e0\u4e3a\u6ca1\u6709 80 \u548c 443 \u7aef\u53e3</li>\n</ol>\n<h3>\u95ee\u9898</h3>\n<ol>\n<li>\u6211\u662f\u5426\u53ef\u4ee5\u5728\u4e00\u53f0\u673a\u5668\u4e0a\u914d\u7f6e ngixn \u670d\u52a1\u7528\u4e8e\u4ee3\u7406\u6240\u6709\u5bb6\u91cc\u7684\u670d\u52a1\uff0c\u56e0\u4e3a\u4e09\u53f0\u865a\u62df\u673a\u7684 ip \u90fd\u4e0d\u540c\uff0c\u5982\u4f55\u4fdd\u8bc1\u8bf7\u6c42\u662f\u76f4\u63a5\u53d1\u9001\u7ed9 nginx \u800c\u4e0d\u662f\u76f4\u63a5\u53d1\u9001\u5230\u5bf9\u5e94\u7684\u865a\u62df\u673a\u4e0a\u5462</li>\n<li>\u6211\u7684\u601d\u8def\u5f88\u6df7\u4e71\uff0c\u4e0d\u592a\u61c2 nginx \u7684\u4ee3\u7406\u6d41\u7a0b\uff0c\u76ee\u524d\u8fd9\u79cd\u4e24\u4e2a\u57df\u540d\u7684\u60c5\u51b5\u6211\u5e94\u8be5\u7533\u8bf7\u7b7e\u53d1\u54ea\u4e2a\u57df\u540d\u7684\u8bc1\u4e66\u5462</li>\n<li>\u5982\u679c\u7b7e\u53d1\u5b8c\u6210\u6211\u9700\u8981\u5728 nginx \u4ee3\u7406\u4e2d\u76d1\u542c\u7684\u57df\u540d\u662f \u963f\u91cc\u4e91\u7684\u57df\u540d\u8fd8\u662f tpddns \u7684\u57df\u540d\u5462</li>\n</ol>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/myangshu", 
        "name": "myangshu", 
        "avatar": "https://cdn.v2ex.com/avatar/f35a/d7cf/660164_large.png?m=1729678097"
      }, 
      "url": "https://www.v2ex.com/t/1093078", 
      "date_modified": "2024-11-27T07:13:43+00:00", 
      "content_html": "<p>\u641e\u4e86\u4e2a\u670d\u52a1\u5668\uff0c\u642d\u5efa\u4e86\u4e00\u4e9b\u4e1c\u897f\uff0c\u4f46\u662f\u5728\u4e0d\u540c\u7aef\u53e3\uff0c\u60f3\u7740\u7528 nginx \u505a\u4e2a\u53cd\u4ee3\u53ef\u4ee5\u5168\u8d70\u4e00\u4e2a\u7aef\u53e3\uff0c\u4f46\u662f\u4ee3\u7406\u8fc7\u540e\u8f6c\u53d1\u7684\u5305\u603b\u662f\u8fd8\u6709\u539f\u6765\u7684\u8def\u5f84\uff0c\u6bd4\u5982\u4e1c\u897f\u5728 30 \u7aef\u53e3\uff0c\u8bbf\u95ee\u5c31\u662f</p>\n<p>http\uff1a//localhost\uff1a30</p>\n<p>\u4f46\u662f\u8f6c\u53d1\u8fc7\u53bb\u5c31\u53d8\u6210\u4e86</p>\n<p>http\uff1a//localhost/abc/</p>\n<p>\u8bf7\u95ee\u8fd9\u4e2a\u6709\u4ec0\u4e48\u89e3\u51b3\u529e\u6cd5\u561b\uff1f</p>\n", 
      "date_published": "2024-11-27T06:10:26+00:00", 
      "title": "\u5173\u4e8e nginx \u7684\u4e00\u4e9b\u63d0\u95ee", 
      "id": "https://www.v2ex.com/t/1093078"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/dunhanson", 
        "name": "dunhanson", 
        "avatar": "https://cdn.v2ex.com/avatar/d2b2/2ccb/172659_large.png?m=1755681128"
      }, 
      "url": "https://www.v2ex.com/t/1092345", 
      "title": "nginx \u9650\u6d41\u5931\u8d25\u7684\u5947\u602a\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1092345", 
      "date_published": "2024-11-25T03:33:45+00:00", 
      "content_html": "<h2>\u95ee\u9898\u63cf\u8ff0</h2>\n<p>~/info \u9650\u6d41\u5931\u8d25</p>\n<p>~info \u548c~/info \u90fd\u80fd\u5339\u914d\u5230\u503c\uff0c$limit_key_pc_page_info \u7684\u503c\u8f93\u51fa page_info</p>\n<p>\u4e3a\u4ec0\u4e48\u52a0/\u7b26\u53f7\u4f1a\u5f71\u54cd\u9650\u6d41\uff1f$limit_key_pc_page_info \u91cc\u9762\u6709\u503c</p>\n<h2>1 \u3001nginx \u914d\u7f6e</h2>\n<pre><code class=\"language-nginx\"># \u53d8\u91cf-URI\nmap $uri $limit_key_pc_page_info {\n\t~/info \"page_info\";\n\t#~info \"page_info\";\n\tdefault \"\";\n}\nlimit_req_zone $limit_key_pc_page_info zone=limit_zone_pc_page_info:10m rate=1r/s;\n\nserver {\n\tlisten 80;\n\tserver_name www.dunhanson.com;\n\tcharset utf-8;\n\n\tlocation / {\n\t\t# \u9650\u6d41\n\t\tlimit_req zone=limit_zone_pc_page_info nodelay;\n\t\tproxy_pass http://www_dunhanson_com;\n\t}\n}\n\nserver {\n\tlisten 80;\n\tserver_name test.dunhanson.com;\n\tcharset utf-8;\n\n\tlocation / {\n\t\tdefault_type text/plain;\n\t\treturn 200 \"$uri $limit_key_pc_page_info\";\n\t}\n}\n</code></pre>\n<h2>2 \u3001\u6d4b\u8bd5\u6548\u679c</h2>\n<pre><code class=\"language-shell\">curl http://test.dunhanson.com/info-558860051.html\n</code></pre>\n<p>\u8f93\u51fa: /info-558860051.html page_info</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/awanganddong", 
        "name": "awanganddong", 
        "avatar": "https://cdn.v2ex.com/gravatar/e482df556a9ac0e4553da45a819ba931?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1091390", 
      "date_modified": "2024-11-21T01:52:26+00:00", 
      "content_html": "<p>\u57df\u540d\u662f\u5728\u963f\u91cc\u4e91\uff0c\u670d\u52a1\u5668 a \u4e5f\u662f\u5728\u963f\u91cc\u4e91\u3002\n\u7136\u540e\u901a\u8fc7\u53cd\u5411\u4ee3\u7406\u6307\u5411\u672c\u5730\u670d\u52a1\u5668 b \u3002</p>\n<p>\u5982\u679c\u5728 nginx \u914d\u7f6e\u4e2d\u589e\u52a0\u4e0b\u8fb9\u51e0\u9879\u5c31\u62a5\u4e0a\u8fb9\u7684\u9519\u8bef\u3002</p>\n<pre><code>        proxy_set_header Host $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 $scheme;\n</code></pre>\n<p>\u5982\u679c\u53bb\u9664\u8fd9\u51e0\u9879\u5c31\u6b63\u5e38\u4e86\u3002</p>\n<p>\u6240\u4ee5\u60f3\u8bf7\u95ee\u4e0b\uff0c\u8fd9\u79cd\u60c5\u51b5\u662f\u600e\u4e48\u9020\u6210\u7684\u3002\u4e0d\u7406\u89e3\u3002</p>\n", 
      "date_published": "2024-11-21T01:51:48+00:00", 
      "title": "\u53cd\u5411\u4ee3\u7406\u63d0\u793a\u8be5\u7f51\u7ad9\u5df2\u88ab\u62e6\u622a\uff0c\u8bf7\u6559", 
      "id": "https://www.v2ex.com/t/1091390"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/importmeta", 
        "name": "importmeta", 
        "avatar": "https://cdn.v2ex.com/avatar/2018/6513/562972_large.png?m=1764517099"
      }, 
      "url": "https://www.v2ex.com/t/1087129", 
      "date_modified": "2024-11-06T06:31:46+00:00", 
      "content_html": "<p>docker \u73af\u5883\u4e0b, \u5916\u90e8\u6709\u4e2a nginx \u53cd\u5411\u4ee3\u7406, \u4ee3\u7406\u4e86\u4e00\u4e2a\u5185\u90e8\u7684 nginx.</p>\n<pre><code>    # \u4e0d\u52a0\u8fd9\u4e00\u6761\u5c31\u65e0\u6cd5\u53cd\u5411\u4ee3\u7406 favicon \u65e5\u5fd7 404 \n    location = /favicon.ico {\n        log_not_found off;\n        proxy_pass http://official;\n    }\n\n    location / {\n        proxy_pass http://official;\n        proxy_set_header Host $host;\n    }\n    \n</code></pre>\n<p>\u6211\u5185\u90e8\u7684 official \u7684 nignx \u76f4\u63a5\u7528\u7aef\u53e3\u8bbf\u95ee, \u662f\u80fd\u770b\u5230 favicon \u7684.</p>\n<p>\u8bd5\u4e86\u597d\u4e45\u624d\u53d1\u73b0, \u5916\u90e8\u5fc5\u987b\u518d\u5199\u4e00\u6761, \u624d\u80fd\u770b\u5230 favicon, \u4f46\u662f\u6211\u4e0d\u5199 css \u4ec0\u4e48\u7684, css \u76f4\u63a5\u5c31\u6ca1\u95ee\u9898, \u53ea\u6709 favicon \u6709\u8fd9\u4e2a\u95ee\u9898.</p>\n<p>\u95ee\u8fc7 AI \u4e86, \u8001\u662f\u7167\u7740\u7ed3\u679c\u56de\u7b54.</p>\n<p>\u4e3a\u4ec0\u4e48\u554a? \u8c22\u8c22\u5404\u4f4d\u4e86.</p>\n", 
      "date_published": "2024-11-06T06:28:16+00:00", 
      "title": "\u4e3a\u4ec0\u4e48\u6211\u7684 docker nginx \u7684\u4e0d\u80fd\u53cd\u5411\u4ee3\u7406 favicon \u554a", 
      "id": "https://www.v2ex.com/t/1087129"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/waringid", 
        "name": "waringid", 
        "avatar": "https://cdn.v2ex.com/avatar/4abc/9add/101794_large.png?m=1730769902"
      }, 
      "url": "https://www.v2ex.com/t/1086681", 
      "date_modified": "2024-11-05T12:45:52+00:00", 
      "content_html": "Nginx \u5bf9\u5916\u6620\u5c04 80 \u548c 443 \u7aef\u53e3\uff0cNginx \u5bf9\u5e94\u7684\u5bbd\u5e26\u7ebf\u8def\u662f 100M \uff08\u4e0a\u4e0b\u884c\u5bf9\u7b49\uff09\uff0c\u901a\u8fc7\u53cd\u5411\u4ee3\u7406\u914d\u7f6e\u57df\u540d\uff08 hostname \uff09\u7684\u65b9\u5f0f\u6620\u5c04\u5230\u540e\u7aef\u670d\u52a1\u5668\u3002\u7c7b\u4f3c\u4e8e\uff1a<br /><a target=\"_blank\" href=\"http://a.example.com\" rel=\"nofollow noopener\">a.example.com</a> -&gt; 192.168.1.10:3000<br /><a target=\"_blank\" href=\"http://b.example.com\" rel=\"nofollow noopener\">b.example.com</a> -&gt; 192.168.2.10:8900<br /><br />\u60f3\u8981\u5b9e\u73b0\u7684\u6548\u679c\uff1a<br /><a target=\"_blank\" href=\"http://a.example.com\" rel=\"nofollow noopener\">a.example.com</a> \u9650\u5236\u8bbf\u95ee\u5e26\u5bbd\u4e3a 2M \uff08\u5916\u7f51\u8bbf\u95ee\uff0c\u4e0d\u9650\u5236\u8bbf\u95ee 192.168.1.10 \uff09<br /><a target=\"_blank\" href=\"http://b.example.com\" rel=\"nofollow noopener\">b.example.com</a> \u9650\u5236\u8bbf\u95ee\u5e26\u5bbd\u4e3a 3M  (\u5916\u7f51\u8bbf\u95ee\uff09<br />\u5176\u5b83\u7684\u57df\u540d\u4e0d\u9650\u5236<br /><br />\u5c1d\u8bd5\u8fc7\u7684\u65b9\u6848\uff1a<br />1 \u3001\u9632\u706b\u5899\u6216\u7f51\u5173\u9650\u5236\uff08\u53ea\u80fd\u57fa\u4e8e IP \u9650\u5236\uff0c\u800c\u4e14\u4e0d\u7075\u6d3b\uff09<br />2 \u3001Nginx \u81ea\u5e26\u7684\u8bbf\u95ee\u9891\u7387\u548c\u8bbf\u95ee\u901f\u7387\u63a7\u5236 \uff08\u6709\u4e00\u5b9a\u6548\u679c\uff0c\u4e0d\u591f\u7075\u6d3b\u5e76\u4e14\u5982\u679c\u662f\u5df2\u5efa\u7acb\u7684\u8fde\u63a5\uff0c\u9650\u5236\u5e26\u5bbd\u64cd\u4f5c\u4e0d\u751f\u6548\uff0c\u9700\u8981\u65ad\u5f00\u672c\u6b21\u8fde\u63a5\uff0c\u91cd\u65b0\u518d\u8fde\u65f6\u624d\u751f\u6548\uff09<br /><br />\u5404\u4f4d\u5927\u4f6c\u6709\u6ca1\u6709\u66f4\u7075\u6d3b\u7684\u5b9e\u73b0\u65b9\u6848\u63a8\u8350\uff1f", 
      "date_published": "2024-11-05T01:35:01+00:00", 
      "title": "Nginx \u80fd\u4e0d\u80fd\u5b9e\u73b0\u6309\u57df\u540d\u9650\u5236\u7f51\u901f\uff1f", 
      "id": "https://www.v2ex.com/t/1086681"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/KadeDivent", 
        "name": "KadeDivent", 
        "avatar": "https://cdn.v2ex.com/gravatar/4e8c3ed0a1e25d5fbdbe7eb637fdb0ed?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1085831", 
      "title": "\u8bf7\u6559\u4e00\u4e0b\u5404\u4f4d\u5173\u4e8e nginx \u7248\u672c\u66f4\u65b0\u533a\u522b\u5bfc\u81f4\u53cd\u5411\u4ee3\u7406\u65e0\u6cd5\u8bbf\u95ee\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1085831", 
      "date_published": "2024-11-01T09:58:43+00:00", 
      "content_html": "<p>\u8fc1\u79fb\u4e86\u4e00\u4e2a headscale \u670d\u52a1\u7aef\uff0c\u53cd\u5411\u4ee3\u7406\u914d\u7f6e\u4e86 headscale-ui \u7684\u9759\u6001\u9875\u9762</p>\n<p>\u6211\u5c06 centos 7 \u4e2d\u7684 nginx v1.20.1 \u914d\u7f6e\u8fc1\u79fb\u5230\u4e86 rocky linux 9 \u4e2d\u7684 nginx v1.26.2 \u4e2d\uff0c</p>\n<p>\u4f7f\u7528\u7684\u5747\u4e3a rpm \u5305</p>\n<p>nginx v1.20.1 \u662f\u5b98\u65b9\u6e90\u4e2d\u4e0b\u8f7d</p>\n<p>nginx v1.26.2 \u662f\u4ece nginx \u6e90\u4e2d\u4e0b\u8f7d</p>\n<hr/>\n<p>\u8fc1\u79fb\u4e4b\u540e headscale \u88ab\u53cd\u5411\u4ee3\u7406\u540e\u7684 8082 \u7aef\u53e3\u5c31\u65e0\u6cd5\u8bbf\u95ee\u4e86\uff0c\u4f46\u662f\u539f\u751f\u7684 8080 \u7aef\u53e3\u53ef\u4ee5\u8bbf\u95ee\uff0c</p>\n<p>\u4e24\u4e2a\u7ad9\u70b9\u914d\u7f6e\u5b8c\u5168\u4e00\u6837\uff0c\u662f\u76f4\u63a5\u590d\u5236\u8fc7\u53bb\u7684</p>\n<p>\u65b0\u7248\u672c\u7684 nginx \u65e5\u5fd7\u4e2d\u6ca1\u6709\u76f8\u5173\u8bbf\u95ee\u65e5\u5fd7</p>\n<p>\u5e76\u4e14 nginx \u7684\u4e3b\u8981\u66f4\u65b0\u65e5\u5fd7\uff0c\u5e76\u6ca1\u6709\u4ec0\u4e48\u5934\u7eea\uff0c\u6240\u4ee5\u53d1\u5e16\u8bf7\u6559\u4e00\u4e0b\u5404\u4f4d</p>\n<hr/>\n<p>\u4ee5\u4e0b\u662f\u65e5\u5fd7\u4e0e\u914d\u7f6e</p>\n<p>\u7ad9\u70b9\u4e3b\u8981\u914d\u7f6e\u5982\u4e0b</p>\n<pre><code>server {\n    listen              8082 ssl ;\n    listen              [::]:8082 ssl ;\n    server_name         xxxx;\n    root                /opt/headscale/headscale-ui/web;\n\n    # SSL\n    ssl_certificate     /etc/nginx/cert/xxxx.crt;\n    ssl_certificate_key /etc/nginx/cert/xxxx.key;\n    ssl_protocols TLSv1.2 TLSv1.3;\n\n    # logging\n    # \u8fd9\u91cc\u5176\u5b9e\u6709\u65e5\u5fd7\u914d\u7f6e\uff0c\u4f46\u662f\u4e0d\u77e5\u9053\u653e\u8fdb\u6765\u5c31\u4e0d\u80fd\u53d1\u5e16\n\n    location /web {\n        alias /opt/headscale/headscale-ui/web;\n        index index.html;\n    }\n\n    # reverse proxy\n    location / {\n        proxy_pass            http://127.0.0.1:8080;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection $connection_upgrade;\n        proxy_set_header Host $server_name;\n        proxy_redirect http:// https://;\n        proxy_buffering off;\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 $http_x_forwarded_proto;\n        add_header Strict-Transport-Security \"max-age=15552000; includeSubDomains\" always;\n    }\n\n}\n\n</code></pre>\n<p>headscale \u7684\u90e8\u5206\u65e5\u5fd7\u5982\u4e0b</p>\n<pre><code>Nov 01 17:13:17 xxxxxx tailscaled[2145341]: control: LoginInteractive -&gt; regen=true\nNov 01 17:13:17 xxxxxx tailscaled[2145341]: control: doLogin(regen=true, hasUrl=false)\nNov 01 17:13:17 xxxxxx tailscaled[2145341]: Received error: fetch control key: Get \"https://xxxxxx:8082/key?v=106\": read tcp 192.168.2.199:36346-&gt;xx.xx.xx.xx:8082: read: connection reset by peer\nNov 01 17:13:17 xxxxxx tailscaled[2145341]: health(warnable=login-state): error: You are logged out. The last login error was: fetch control key: Get \"https://xxxxxx:8082/key?v=106\": read tcp 192.168.2.199:36346-&gt;xx.xx.xx.xx:8082: read: connection reset by peer\n</code></pre>\n<p>nginx \u7684\u7248\u672c\u4fe1\u606f\u5982\u4e0b</p>\n<p>\u65e7\u670d\u52a1\u5668</p>\n<pre><code>nginx version: nginx/1.20.1\nbuilt by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) \nbuilt with OpenSSL 1.1.1k  FIPS 25 Mar 2021\nTLS SNI support enabled\n</code></pre>\n<p>\u65b0\u670d\u52a1\u5668</p>\n<pre><code>nginx version: nginx/1.26.2\nbuilt by gcc 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC) \nbuilt with OpenSSL 3.0.7 1 Nov 2022\nTLS SNI support enabled\n</code></pre>\n<blockquote>\n<p>\u8be6\u7ec6\u7684\u7f16\u8bd1\u53c2\u6570\u653e\u4e0d\u8fdb\u53bb\uff0c\u5982\u679c\u6709\u9700\u8981\u7684\u8bdd\uff0c\u540e\u7eed\u8003\u8651\u622a\u56fe\u653e\u5728\u540e\u9762</p>\n</blockquote>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xiaochena", 
        "name": "xiaochena", 
        "avatar": "https://cdn.v2ex.com/avatar/375d/caee/487582_large.png?m=1729752063"
      }, 
      "url": "https://www.v2ex.com/t/1083249", 
      "date_modified": "2024-10-24T10:41:44+00:00", 
      "content_html": "<p>\u5728\u8bf7\u6c42\u5982 /_next/static/media/page-main-image.0b61c706.png \u8fd9\u6837\u7684\u6587\u4ef6\u65f6</p>\n<p>\u8fd9\u6bb5\u914d\u7f6e\u53ef\u4ee5\u6b63\u5e38\u8fd0\u884c</p>\n<pre><code class=\"language-nginx\">    location ~* /_next/static/.*(js|css|png|jpg|jpeg|svg|gif|ico|ttf|webp)$ {\n      rewrite /_next/(.*) /.next/$1 break;\n      try_files $uri $uri/;\n      expires 1y; # \u8bbe\u7f6e\u7f13\u5b58\u65f6\u95f4\u4e3a 1 \u5e74\n      add_header Cache-Control \"public\";\n    }\n</code></pre>\n<p>\u8fd9\u6bb5\u914d\u7f6e\u5374\u627e\u4e0d\u5230\u6587\u4ef6\u3001\u54cd\u5e94\u4f53\u8fd8\u4f1a\u53d8\u6210 308 \u91cd\u5b9a\u5411</p>\n<pre><code class=\"language-nginx\">    location ~* /_next/static/.*(js|css|png|jpg|jpeg|svg|gif|ico|ttf|webp)$ {\n      alias /app/.next/static/; # \u5c06\u8bf7\u6c42\u8def\u5f84 /_next/static/ \u6620\u5c04\u5230\u6587\u4ef6\u7cfb\u7edf\u7684 /app/.next/static/\n      expires 1y; # \u8bbe\u7f6e\u7f13\u5b58\u65f6\u95f4\u4e3a 1 \u5e74\n      add_header Cache-Control \"public\";\n    }\n</code></pre>\n", 
      "date_published": "2024-10-24T06:44:20+00:00", 
      "title": "\u865a\u5fc3\u8bf7\u6559\u4e00\u4e2a\u6709\u5173\u4e8e nginx \u914d\u7f6e\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1083249"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/LeeLou", 
        "name": "LeeLou", 
        "avatar": "https://cdn.v2ex.com/gravatar/1b1d6e99f3c26b0754145f8453e2063c?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1080932", 
      "title": "\u6c42\u89e3 nginx \u53cd\u4ee3\u67d0\u5821\u5792\u673a 443 \u9875\u9762\u51fa\u73b0\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1080932", 
      "date_published": "2024-10-16T11:29:55+00:00", 
      "content_html": "<p>\u67d0\u5821\u5792\u673a\u53ef\u4ee5\u7528\u7f51\u9875 h5 \u9875\u9762\u8fd0\u7ef4 ssh \u767b\u5f55\u7684\u8d44\u4ea7,\u6216\u662f rdp \u767b\u5f55\u7684 windows \u8d44\u4ea7\u3002\u8fd0\u7ef4 ssh \u8d44\u4ea7\u65f6\uff0curl \u4e3a/access/h5/tool/ssh/operate_id/d928d8570b97XXX \uff0c  \u8fd0\u7ef4 rdp \u8d44\u4ea7\u65f6\uff0curl \u4e3a/access/h5/tool/vnc/operate_id/d928d8570b97XXX \u3002</p>\n<p>\u4f7f\u7528 nginx \u53cd\u4ee3\u5821\u5792\u673a\u7684 443 \u7aef\u53e3\uff0c\u767b\u5f55\u5821\u5792\u673a\uff0c\u8fd0\u7ef4 rdp \u8d44\u4ea7\u90fd\u6ca1\u95ee\u9898\u3002 \u4f46\u8fd0\u7ef4 ssh \u8d44\u4ea7\u65f6\uff0c\u663e\u793a\u6743\u9650\u4e0d\u5bf9\uff0c\u767b\u5f55\u5931\u8d25\u3002</p>\n<p>\u4e24\u79cd\u8d44\u4ea7\u90fd\u662f\u7528\u5bc6\u7801\u767b\u5f55\u7684\uff0curl \u5728\u53cd\u4ee3\u524d\u548c\u53cd\u4ee3\u540e\uff0c\u611f\u89c9\u4e5f\u6ca1\u6709\u533a\u522b\u3002</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/dunhanson", 
        "name": "dunhanson", 
        "avatar": "https://cdn.v2ex.com/avatar/d2b2/2ccb/172659_large.png?m=1755681128"
      }, 
      "url": "https://www.v2ex.com/t/1069698", 
      "date_modified": "2024-09-02T10:20:54+00:00", 
      "content_html": "<p>nginx if \u8bed\u53e5 return 403 \uff0c\u6ca1\u529e\u6cd5\u8df3\u8f6c\u81ea\u5b9a\u4e49 403 \u9875\u9762</p>\n<p>\u8fd4\u56de\u7684 403 \u8fd8\u662f nginx \u81ea\u5e26\u7684 403 \u9875\u9762</p>\n<pre><code class=\"language-conf\">error_page 403 /403.html;\nlocation = /403.html {\n\troot D:/program/nginx/nginx-1.18.0/html;\n}\n\nif ($http_user_agent ~ \"Baiduspider\") {\n\treturn 403;\n}\n</code></pre>\n", 
      "date_published": "2024-09-02T10:13:41+00:00", 
      "title": "nginx if \u8bed\u53e5 return 403\uff0c\u6ca1\u529e\u6cd5\u8df3\u8f6c\u81ea\u5b9a\u4e49 403 \u9875\u9762", 
      "id": "https://www.v2ex.com/t/1069698"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/ab", 
        "name": "ab", 
        "avatar": "https://cdn.v2ex.com/avatar/2cd8/7697/76017_large.png?m=1725000948"
      }, 
      "url": "https://www.v2ex.com/t/1069052", 
      "date_modified": "2024-08-30T07:06:30+00:00", 
      "content_html": "<p>http{\ndeny    192.168.6.8;\n...\nserver {\nlisten 443 ssl;\nhttp2 on;\nserver_name <a href=\"http://example.com\" rel=\"nofollow\">example.com</a>;\n...\nif ($http_user_agent ~* \"curl\") {\nreturn 406;\n}\n}\n}\n\u5ba2\u6237\u7aef 192.168.6.8 \u4f7f\u7528 curl -I <a href=\"http://example.com\" rel=\"nofollow\">example.com</a> \u65f6\uff0c\u8fd4\u56de 406 \uff0c\u96be\u9053 if \u6bd4 http \u6bb5\u7684 deny ip \u7684\u4f18\u5148\u7ea7\u8fd8\u9ad8\u5417\uff1f</p>\n", 
      "date_published": "2024-08-30T06:57:12+00:00", 
      "title": "\u8bf7\u6559 nginx deny \u4f18\u5148\u7ea7\u7684\u95ee\u9898\u3002", 
      "id": "https://www.v2ex.com/t/1069052"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Aicnal", 
        "name": "Aicnal", 
        "avatar": "https://cdn.v2ex.com/avatar/257e/3a01/670465_large.png?m=1722351747"
      }, 
      "url": "https://www.v2ex.com/t/1067478", 
      "date_modified": "2024-08-24T07:19:36+00:00", 
      "content_html": "<p>\u4e4b\u524d\u90e8\u7f72\u4e86\u4e00\u4e2a Discourse \u7ad9\u70b9 \u90e8\u7f72\u5728\u4e00\u53f0\u914d\u7f6e\u6bd4\u8f83\u9ad8\u4f46\u662f\u7ebf\u8def\u6ca1\u6709\u4f18\u5316\u7684\u673a\u5668\u4e0a\n\u5bb9\u5668\u5185\u90e8\u4f7f\u7528 nginx \u7136\u540e\u901a\u8fc7 Unix Socket \u4f7f\u7528\u5bbf\u4e3b\u673a\u7684 Caddy \u8fdb\u884c\u57df\u540d\u8bbf\u95ee\n\u4e4b\u540e\u6211\u5728\u7ebf\u8def\u6bd4\u8f83\u597d\u7684\u9999\u6e2f\u670d\u52a1\u5668\u4e0a\u90e8\u7f72 Nginx \u5bf9\u539f\u7ad9\u8fdb\u884c\u53cd\u4ee3\n\u4f46\u662f\u53cd\u4ee3\u540e\u4e3a<code>502</code>\uff0c\u65e0\u6cd5\u6b63\u5e38\u8bbf\u95ee \u6211\u770b\u4e86\u4e0b<code>error.log</code>\u8bf4\u7684\u662f\u4ee3\u7406\u670d\u52a1\u5668\u548c\u6e90\u7ad9 ssl \u63e1\u624b\u5931\u8d25 \u4f46\u662f\u6211\u5728\u4ee3\u7406\u670d\u52a1\u5668\u91cc\u9762\u5199\u7684\u662f<code>https</code>\uff0c\u800c\u4e14\u4ee3\u7406\u670d\u52a1\u5668<code>curl</code>\u80fd\u6b63\u5e38\u83b7\u53d6\u5230\u5185\u5bb9\n\u8fd9\u4e2a\u662f\u6e90\u7ad9\u7684<code>caddyfile</code></p>\n<pre><code class=\"language-caddyfile\">direct.example.com {\n    reverse_proxy unix//var/discourse/shared/standalone/nginx.http.sock {\n        header_up Host {host}\n        header_up X-Real-IP {remote}\n        header_up X-Forwarded-For {remote}\n        header_up X-Forwarded-Proto {scheme}\n    }\n header {\n        Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\"\n    }\n}\n\nsynapse.know-cnu.wiki {\n    reverse_proxy localhost:8008 {\n        # WebSocket \u8fde\u63a5\u7684\u9ed8\u8ba4\u914d\u7f6e\n        header_up Host {host}\n        header_up X-Real-IP {remote}\n        header_up X-Forwarded-For {remote}\n        header_up X-Forwarded-Proto {scheme}\n\n        # \u5904\u7406 WebSocket \u8fde\u63a5\n        transport http {\n            read_buffer 0\n        }\n    }\n\n    # \u8bbe\u7f6e HSTS \u5934\u90e8\n    header {\n        Strict-Transport-Security \"max-age=31536000; includeSubDomains; preload\"\n    }\n\n</code></pre>\n<p>\u8fd9\u4e2a\u662f\u4ee3\u7406\u670d\u52a1\u5668\u7684<code>nginx.conf</code>\uff0c\u672a\u4f7f\u7528<code>ssl</code></p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name example.com;\n\n    location / {\n        proxy_pass https://direct.example.com;\n        proxy_set_header Host $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 $scheme;\n    }\n}\n</code></pre>\n<p><code>error.log</code>\u5982\u4e0b</p>\n<pre><code class=\"language-log\">root@VM80459:~# tail -f /var/log/nginx/error.log\n2024/08/24 06:08:57 [emerg] 3325#3325: \"server\" directive is not allowed here in /etc/nginx/nginx.conf:11\n2024/08/24 06:09:05 [emerg] 3326#3326: \"server\" directive is not allowed here in /etc/nginx/nginx.conf:11\n2024/08/24 06:10:18 [notice] 3373#3373: signal process started\n2024/08/24 06:19:53 [notice] 3445#3445: signal process started\n2024/08/24 06:20:02 [error] 3446#3446: *12 SSL_do_handshake() failed (SSL: error:0A000438:SSL routines::tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 1xx.1x.5x.xx, server: know-cnu.wiki, request: \"GET / HTTP/1.1\", upstream: \"https://[2400:61xx:0:dx::xa:a0x]:443/\", host: \"example.com\"\n2024/08/24 06:20:02 [error] 3446#3446: *12 SSL_do_handshake() failed (SSL: error:0A000438:SSL routines::tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 10x.13x.5x.18x, server: example.com, request: \"GET / HTTP/1.1\", upstream: \"https://15x.8x.2xx.xx:443/\", host: \"example.com\"\n</code></pre>\n", 
      "date_published": "2024-08-24T07:14:58+00:00", 
      "title": "\u6c42\u6559\u5173\u4e8e\u53cd\u4ee3\u7684\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1067478"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/xinzi", 
        "name": "xinzi", 
        "avatar": "https://cdn.v2ex.com/avatar/3e06/67c3/492586_large.png?m=1693106110"
      }, 
      "url": "https://www.v2ex.com/t/1066197", 
      "date_modified": "2024-08-19T14:59:37+00:00", 
      "content_html": "<p>\u57df\u540d\u5df2\u7ecf\u5904\u7406\n\u4e0d\u589e\u52a0 http \u5757\uff0c\u53ef\u4ee5\u6b63\u5e38\u8bbf\u95ee\uff0c\u8bc1\u4e66\u6b63\u5e38\uff0c\u589e\u52a0\u4e86 http \u5757\u5c31\u62a5\u8bc1\u4e66\u9519\u8bef\uff0c\u8bf7\u6559\u4e00\u4e0b\u3002\u5168\u90e8\u90fd docker \u542f\u52a8\n\u6211\u7684 nginx \u914d\u7f6e \u5982\u4e0b</p>\n<pre><code>worker_processes auto; # \u81ea\u52a8\u8bbe\u7f6e\u4e3a CPU \u6838\u5fc3\u6570\nworker_rlimit_nofile 100000; # \u589e\u52a0\u6bcf\u4e2a worker \u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u7684\u6587\u4ef6\u6570\n\nevents {\n  worker_connections 4096; # \u589e\u52a0\u6bcf\u4e2a worker \u8fdb\u7a0b\u7684\u6700\u5927\u8fde\u63a5\u6570\n  multi_accept on; # \u5141\u8bb8\u6bcf\u4e2a worker \u8fdb\u7a0b\u540c\u65f6\u63a5\u53d7\u591a\u4e2a\u8fde\u63a5\n}\n\nhttp {\n  include /etc/nginx/mime.types;\n  default_type application/octet-stream;\n  sendfile on;\n  keepalive_timeout 65;\n  gzip on;\n\n  server {\n    listen 80;\n    server_name es.x.com.cn;\n    return 301 https://$server_name$request_uri;\n  }\n\n  server {\n    listen 443 ssl;\n    server_name es.x.com.cn;\n\n    # SSL \u8bc1\u4e66\u548c\u5bc6\u94a5\u914d\u7f6e\n    ssl_certificate /usr/share/nginx/html/ssl-qianduan/es.x.com.cn_bundle.pem;\n    ssl_certificate_key /usr/share/nginx/html/ssl-qianduan/es.x.com.cn.key;\n\n    # SSL \u4f18\u5316\u914d\u7f6e\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';\n    ssl_prefer_server_ciphers on;\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n    add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\n    ssl_stapling on;\n    ssl_stapling_verify on;\n\n    location / {\n      root /usr/share/nginx/html; # \u8def\u5f84\u6539\u6210\u81ea\u5df1\u7684 dist \u8def\u5f84\n      index index.html index.htm;\n      try_files $uri $uri/ /index.html; #\u89e3\u51b3\u5237\u65b0\u9875\u9762\u53d8\u6210 404 \u95ee\u9898\u7684\u4ee3\u7801\n    }\n\n    location /prod-api/ {\n      proxy_set_header Host $http_host;\n      proxy_set_header X-Real-IP $remote_addr;\n      proxy_set_header REMOTE-HOST $remote_addr;\n      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_pass http://172.16.238.13:8089/;\n    }\n  }\n\n  server {\n    listen 80;\n    server_name esb.x.com.cn;\n    return 301 https://$server_name$request_uri;\n  }\n\n  server {\n    listen 443 ssl;\n    server_name esb.x.com.cn;\n\n    # SSL \u8bc1\u4e66\u548c\u5bc6\u94a5\u914d\u7f6e\n    ssl_certificate /usr/share/nginx/html/ssl-houduan/esb.x.com.cn_bundle.pem;\n    ssl_certificate_key /usr/share/nginx/html/ssl-houduan/esb.x.com.cn.key;\n\n    location / {\n      proxy_set_header Host $http_host;\n      proxy_set_header X-Real-IP $remote_addr;\n      proxy_set_header REMOTE-HOST $remote_addr;\n      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_pass http://172.16.238.13:8089/;\n    }\n  }\n\n  # \u963b\u6b62\u901a\u8fc7 IP \u5730\u5740\u6216\u672a\u77e5\u7684\u57df\u540d\u8bbf\u95ee\n  server {\n    listen 80 default_server;\n    listen 443 default_server ssl;\n\n    # SSL \u8bc1\u4e66\u548c\u5bc6\u94a5\u914d\u7f6e\n    ssl_certificate /usr/share/nginx/html/ssl-houduan/esb.x.com.cn_bundle.pem;\n    ssl_certificate_key /usr/share/nginx/html/ssl-houduan/esb.x.com.cn.key;\n\n    server_name es.x.com.cn;\n    return 444; # \u8fd4\u56de\u4e00\u4e2a\u975e\u6807\u51c6\u7684\u72b6\u6001\u7801\uff0c\u901a\u5e38\u7528\u4e8e\u963b\u6b62\u5ba2\u6237\u7aef\u7684\u8bbf\u95ee\n  }\n}\n</code></pre>\n", 
      "date_published": "2024-08-19T09:01:23+00:00", 
      "title": "nginx \u589e\u52a0 http \u5757 \u5c31\u62a5\u8bc1\u4e66\u9519\u8bef\uff0c\u8bf7\u95ee\u662f\u4ec0\u4e48\u539f\u56e0,\u7b2c\u4e00\u6b21\u89c1", 
      "id": "https://www.v2ex.com/t/1066197"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/drymonfidelia", 
        "name": "drymonfidelia", 
        "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1065205", 
      "date_modified": "2024-08-15T05:22:30+00:00", 
      "content_html": "<p>\u6bcf\u5929\u539f\u56e0\u90fd\u4e0d\u4e00\u6837\uff0c\u8fd9\u662f\u4eca\u5929\u7684\u65e5\u5fd7</p>\n<pre><code>Aug 15 13:07:32 hostname nginx[3297853]: nginx: [emerg] host not found in upstream \"backend.example.com\" in /etc/nginx/sites-enabled/app1:25\nAug 15 13:07:32 hostname nginx[3297853]: nginx: configuration file /etc/nginx/nginx.conf test failed\nAug 15 13:07:32 hostname systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE\nAug 15 13:07:32 hostname systemd[1]: nginx.service: Failed with result 'exit-code'.\nAug 15 13:07:32 hostname systemd[1]: Failed to start A high performance web server and a reverse proxy server.\n</code></pre>\n<p>\u5728\u8fd9\u51e0\u79d2\u524d\u5d29\u4e86\u6ca1\u5199\u65e5\u5fd7\uff0c\u8fd9\u4e2a\u65e5\u5fd7\u662f\u521a\u81ea\u52a8\u91cd\u542f\u540e\u53c8\u5d29\u4e86\u7684\u3002\u6ca1\u6539\u914d\u7f6e\uff0c10 \u79d2\u540e\u7b2c\u4e09\u6b21\u81ea\u52a8\u91cd\u542f\u5c31\u6210\u529f\u4e86\u3002backend \u5728\u522b\u7684\u670d\u52a1\u5668\u4e0a\uff0c\u5185\u7f51 DNS \u4e5f\u4e00\u76f4\u6b63\u5e38</p>\n", 
      "date_published": "2024-08-15T05:19:10+00:00", 
      "title": "\u6709\u53f0\u751f\u4ea7\u670d\u52a1\u5668\uff0c Nginx \u6bcf\u5929\u90fd\u4f1a\u56e0\u4e3a\u4e0d\u540c\u539f\u56e0 exit \u4e00\u6b21\uff0c\u867d\u7136\u914d\u4e86\u81ea\u52a8\u91cd\u542f\uff0c\u6709\u6ca1\u529e\u6cd5\u6392\u67e5\u662f\u4ec0\u4e48\u539f\u56e0\uff1f\u5e73\u5747\u4e00\u5929 1820 \u4e07\u8bf7\u6c42", 
      "id": "https://www.v2ex.com/t/1065205"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/kaf", 
        "name": "kaf", 
        "avatar": "https://cdn.v2ex.com/gravatar/b27d0a8a407a1268454fd29288c69d94?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1064581", 
      "title": "openresty \u600e\u4e48\u4fee\u6539\u4ee3\u7406\u7ad9\u7684\u6587\u4ef6\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef", 
      "id": "https://www.v2ex.com/t/1064581", 
      "date_published": "2024-08-13T03:27:17+00:00", 
      "content_html": "<p>\u6e90\u7ad9\u6709\u5f88\u591a\u9759\u6001\u8d44\u6e90\u4e0b\u8f7d\uff0copenresty \u4f5c\u4e3a\u7f51\u5173\u52a0\u4e86\u9274\u6743\uff0c\u5e0c\u671b\u80fd\u89e3\u6790\u7279\u5b9a\u7684\u6587\u672c\u6587\u4ef6\uff0c\u628a\u9274\u6743\u53c2\u6570\u8ffd\u52a0\u5230\u6587\u672c\u6587\u4ef6\u7684\u6bcf\u4e00\u884c\uff0c\u82b1\u4e86\u534a\u5929\u65f6\u95f4\u6ca1\u641c\u7d22\u5230\u4ec0\u4e48\u8d44\u6599\u3002\u4eca\u5929\u6709\u770b\u5230\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7 lua \u811a\u672c\u76f4\u63a5\u8bf7\u6c42\u6e90\u7ad9\u83b7\u53d6 body \u4e4b\u540e\u4fee\u6539\u540e\u8fd4\u56de\uff0copenresty \u4e3b\u9898\u4eba\u592a\u5c11\u4e86\uff0c\u6765\u8fd9\u8fb9\u5e0c\u671b\u6709\u5927\u4f6c\u6307\u5bfc\u4e0b</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/EthZhang", 
        "name": "EthZhang", 
        "avatar": "https://cdn.v2ex.com/avatar/970d/38be/672098_large.png?m=1758097958"
      }, 
      "url": "https://www.v2ex.com/t/1064164", 
      "title": "\u6709\u5565\u5e73\u66ff resend\u3001ZeptoMail \u7684\u56fd\u5185\u89e3\u51b3\u65b9\u6848\u561b\uff1f", 
      "id": "https://www.v2ex.com/t/1064164", 
      "date_published": "2024-08-11T11:02:25+00:00", 
      "content_html": "<p>\u6700\u8fd1\u60f3\u5728\u9879\u76ee\u91cc\u52a0\u4e0a\u90ae\u4ef6\u63a8\u9001\u529f\u80fd\uff0c\u91cd\u8981\u7684\u662f\u60f3\u80fd\u591f\u81ea\u5b9a\u4e49\u53d1\u4ef6\u57df\u540d\u7684\u8fd9\u79cd\u3002\u50cf\u5927\u5382\u63d0\u4f9b\u7684\u670d\u52a1\u4ef7\u683c\u4e5f\u5fd2\u9ed1\u4e86\uff0c\u6d77\u5916\u7684 API \u670d\u52a1\u6211\u5728\u56fd\u5185\u670d\u52a1\u5668\u8fd8 ping \u4e0d\u5230\uff0c\u641e nginx \u53cd\u4ee3\u4e5f\u5f97\u5355\u72ec\u518d\u4e70\u53f0\u670d\u52a1\u5668\uff0c\u7ea0\u7ed3\u4e2d...</p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/cokyhe", 
        "name": "cokyhe", 
        "avatar": "https://cdn.v2ex.com/gravatar/6d12c606f4ec41400c00a0e946d1bd87?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1062404", 
      "title": "\u6c42\u6551\uff1a\u5c4f\u853d\u722c\u866b\u8bd5\u4e86 2 \u5929\uff0c\u6ca1\u6210\u529f", 
      "id": "https://www.v2ex.com/t/1062404", 
      "date_published": "2024-08-04T09:16:28+00:00", 
      "content_html": "<p>\u4e00\u53f0 10 \u5e74\u7684\u8001\u670d\u52a1\u5668\uff0c\u6700\u8fd1 bingbot \u75af\u72c2\u5237\u6d41\u91cf\uff0c\u7528$http_user_agent \u4e3a\u5565\u5c4f\u853d\u4e0d\u4e86...\nnginx \u65e5\u5fd7\u91cc N \u591a\u7c7b\u4f3c\u8fd9\u6837\u7684\u8bb0\u5f55:  </p>\n<pre><code>172.68.244.177 - - [04/Aug/2024:04:04:10 -0400] \"GET /find-app/%E0%B8%AD%E0%B8%B2%E0%B8%8A%E0%B8%B5%E0%B8%9E%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B8%8A%E0%B8%B2%E0%B8%A7%E0%B8%AB%E0%B8%A7%E0%B8%B9%E0%B9%88%E0%B8%AB%E0%B8%A5%E0%B8%B4%E0%B8%87%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%81%E0%B8%9B%E0%B8%A5%E0%B8%B2%E3%80%90ta777.me%E3%80%91%E0%B8%AD%E0%B8%B2%E0%B8%8A%E0%B8%B5%E0%B8%9E%E0%B8%82%E0%B8%AD%E0%B8%87%E0%B8%8A%E0%B8%B2%E0%B8%A7%E0%B8%AB%E0%B8%A7%E0%B8%B9%E0%B9%88%E0%B8%AB%E0%B8%A5%E0%B8%B4%E0%B8%87%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%81%E0%B8%9B%E0%B8%A5%E0%B8%B2%E3%80%90ta777.me%E3%80%91w7t?page=2 HTTP/1.1\" 403 571 \"-\" \"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36\" 52.167.144.211\n172.71.222.36 - - [04/Aug/2024:04:04:10 -0400] \"GET /find-app/%E6%B9%96%E5%8D%97%E6%B0%B4%E5%88%A9%E6%B0%B4%E7%94%B5%E8%81%8C%E4%B8%9A%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2%E6%AF%95%E4%B8%9A%E8%AF%81%E6%A0%B7%E6%9C%AC%E5%9B%BE%E7%89%87%E2%8F%A9%E5%8A%9E%E7%90%86%E7%BD%91zhengjian.shop%E2%8F%AA-%E5%93%AA%E9%87%8C%E4%B9%B0%E6%B9%96%E5%8D%97%E6%B0%B4%E5%88%A9%E6%B0%B4%E7%94%B5%E8%81%8C%E4%B8%9A%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2%E6%AF%95%E4%B8%9A%E8%AF%81%E6%A0%B7%E6%9C%AC%E5%9B%BE%E7%89%87%F0%9F%8C%9F%E5%8A%9E%E8%AF%81%E7%BD%91zhengjian.shop%F0%9F%8C%9F-%E5%BC%A0%E5%AE%B6%E6%B8%AF%E6%B9%96%E5%8D%97%E6%B0%B4%E5%88%A9%E6%B0%B4%E7%94%B5%E8%81%8C%E4%B8%9A%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2%E6%AF%95%E4%B8%9A%E8%AF%81%E6%A0%B7%E6%9C%AC%E5%9B%BE%E7%89%87%E5%93%AA%E9%87%8C%E6%9C%89-%E5%93%AA%E9%87%8C%E5%8A%9E%E6%B9%96%E5%8D%97%E6%B0%B4%E5%88%A9%E6%B0%B4%E7%94%B5%E8%81%8C%E4%B8%9A%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2%E6%AF%95%E4%B8%9A%E8%AF%81%E6%A0%B7%E6%9C%AC%E5%9B%BE%E7%89%87Q5?page=3 HTTP/1.1\" 403 571 \"-\" \"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36\" 52.167.144.211\n</code></pre>\n<p>\u4ee5\u4e0b\u662f\u5b8c\u6574\u914d\u7f6e</p>\n<pre><code>server\n    {\n  \tlisten       80;\n  \tlisten     443 ssl;\n  \t#\n    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;\n    ##    ssl_session_timeout  5m;\n    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n    ssl_prefer_server_ciphers   on;\n    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;\n\n    ## enable HSTS including subdomains\n    add_header Strict-Transport-Security \"max-age=31536000; includeSubdomains\";\n\n  \tserver_name  domain.com www.domain.com;\n  \tindex index.html index.htm index.php;\n  \troot  /opt/htdocs/www.domain.com/public;\n\n  \t#301\n\n  \tif ($host = 'domain.com') {\n  \t\trewrite ^/(.*)$ https://www.domain.com/$1 permanent;\n  \t}\n\n#location ~ /find-app {\n\tif ($http_user_agent ~* \"bingbot|AhrefsBot\") {\nreturn 403;\n}\n#}\n  \tlocation / {\n          try_files $uri $uri/ /index.php?$query_string;\n      }\n      #\u7533\u8bf7 let\u2019s Encrypt SSL \u7528\n      location ~ /.well-known {\n              allow all;\n      }\n\n\n  \tif (!-e $request_filename) {\n  \t}\n\n  \tlocation ~ .*\\.(php|php5)?$\n  \t{\n  \t  #fastcgi_pass  unix:/tmp/php-cgi.sock;\n  \t  fastcgi_pass  127.0.0.1:9000;\n  \t  fastcgi_index index.php;\n  \t  include fcgi.conf;\n  \t}\n\n  \tlocation ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$\n  \t{\n  \t  expires      30d;\n  \t}\n\n  \tlocation ~ .*\\.(js|css)?$\n  \t{\n  \t  expires      15d;\n  \t}\n  \taccess_log  /data0/logs/domain.log  access;\n    }\n</code></pre>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/Raymondx", 
        "name": "Raymondx", 
        "avatar": "https://cdn.v2ex.com/avatar/b085/5af5/669799_large.png?m=1722155482"
      }, 
      "url": "https://www.v2ex.com/t/1060674", 
      "title": "[\u6c42\u52a9\u5927\u4f6c] Nginx \u53cd\u4ee3\u591a\u4e2a\u7f51\u7ad9\u51fa\u73b0\u4e32\u7ad9\u95ee\u9898", 
      "id": "https://www.v2ex.com/t/1060674", 
      "date_published": "2024-07-28T08:51:12+00:00", 
      "content_html": "<p><em>\u4f7f\u7528\u5b9d\u5854\u9762\u677f 8.2.0 \u3001Nginx1.22.1 \uff0c\u7cfb\u7edf\u4e3a Ubuntu 20.04LTS</em></p>\n<p><strong>\u64cd\u4f5c\uff1a</strong>\u4f7f\u7528 Nginx \u53cd\u4ee3\u4e86\u4e09\u4e2a\u7f51\u7ad9</p>\n<p>\u7f51\u7ad9\u4e00\u4e3a\uff1amap.~.com \u2192 81 \u7aef\u53e3\uff0c\u5f00\u542f https</p>\n<p>\u7f51\u7ad9\u4e8c\u4e3a\uff1afrp.~.com \u2192 7800 \u7aef\u53e3\uff0c\u672a\u5f00\u542f https</p>\n<p>\u7f51\u7ad9\u4e09\u4e3a\uff1ar730test.~.com \u2192 81 \u7aef\u53e3\uff0c\u672a\u5f00\u542f https</p>\n<p>\u5176\u4e2d 81 \u7aef\u53e3\u4e3a frps \u7684 http \u7aef\u53e3\uff0cmap.~.com \u548c r730test.~.com \u90fd\u662f\u90e8\u7f72\u5728\u5185\u7f51\uff0c\u7528 frp \u7a7f\u900f\u51fa\u6765\u7684\uff0c7800 \u662f frp \u7684\u76d1\u63a7\u9762\u677f\u7aef\u53e3</p>\n<p><strong>\u95ee\u9898\uff1a</strong>\u73b0\u5728\u8bbf\u95ee map.~.com \u662f\u6b63\u5e38\u7684\uff0c\u4f46\u662f\u8bbf\u95ee frp.~.com \u548c r730test.~.com \u4f1a\u88ab\u8df3\u8f6c\u5230 https://frp.~.com/\u548c https://r730test.~.com/ \uff0c\u800c\u4e14\u663e\u793a\u7684\u662f map.~.com \u7684\u5185\u5bb9</p>\n<p>\u5728\u6dfb\u52a0 map.~.com \u7684\u53cd\u4ee3\u4e4b\u524d\u90fd\u662f\u6b63\u5e38\u7684\uff0c\u6dfb\u52a0\u4e86 map.~.com \u7684\u53cd\u4ee3\u4e4b\u540e\u5c31\u51fa\u95ee\u9898\u4e86</p>\n<p><img alt=\"\" class=\"embedded_image\" loading=\"lazy\" referrerpolicy=\"no-referrer\" rel=\"noreferrer\" src=\"https://pic.imgdb.cn/item/66a6045bd9c307b7e99d6819.png\"/></p>\n<p>Nginx \u914d\u7f6e\u6587\u4ef6\u5982\u4e0b</p>\n<p><a href=\"https://pastecode.io/s/uni4h5f6\" rel=\"nofollow\">https://pastecode.io/s/uni4h5f6</a></p>\n<p><a href=\"https://pastecode.io/s/80nxwxhx\" rel=\"nofollow\">https://pastecode.io/s/80nxwxhx</a></p>\n<p><a href=\"https://pastecode.io/s/0j74wdcn\" rel=\"nofollow\">https://pastecode.io/s/0j74wdcn</a></p>\n"
    }, 
    {
      "author": {
        "url": "https://www.v2ex.com/member/wzdc", 
        "name": "wzdc", 
        "avatar": "https://cdn.v2ex.com/gravatar/4783716584813dc2fd65e5b8caf1aa65?s=73&d=retro"
      }, 
      "url": "https://www.v2ex.com/t/1060477", 
      "date_modified": "2024-07-27T03:42:10+00:00", 
      "content_html": "\u53cd\u4ee3\u672c\u673a 5000 \u7aef\u53e3\u5e76\u7f13\u5b58\u54cd\u5e94\u7801\u4e3a 302 \u7684\u5185\u5bb9<br />\u5982\u679c\u91cd\u5b9a\u5411\u7684\u94fe\u63a5\u5305\u542b <a target=\"_blank\" href=\"http://example.com\" rel=\"nofollow noopener\">example.com</a> \uff08\u4e5f\u5c31\u662f\u57df\u540d\u4e3a*.example.com \uff09\u90a3\u4e48\u5c31\u7f13\u5b58 10 \u5c0f\u65f6\uff0c\u7f13\u5b58\u952e\u4e3a $scheme$request_method$host$request_uri$http_user_agent$http_authorization<br />\u5426\u5219\u7f13\u5b58 10 \u5206\u949f\uff0c\u7f13\u5b58\u952e\u4e3a  $scheme$request_method$host$request_uri$http_authorization<br /><br />\u8fd9\u79cd NGINX \u914d\u7f6e\u600e\u4e48\u5199\uff1f", 
      "date_published": "2024-07-27T03:12:15+00:00", 
      "title": "\u6c42 \u8fd9\u79cd NGINX \u914d\u7f6e\u600e\u4e48\u5199", 
      "id": "https://www.v2ex.com/t/1060477"
    }
  ]
}