{ "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": "go/nginx", "feed_url": "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": "member/cowiejulewbfwo", "name": "cowiejulewbfwo", "avatar": "https://cdn.v2ex.com/avatar/8471/6c1e/748921_large.png?m=1758266094" }, "url": "t/1175687", "date_modified": "2025-11-28T10:49:31+00:00", "content_html": "

Docker Nginx (Host Mode) + Fail2Ban \u5b8c\u6574\u6307\u5357

\n

\u672c\u6559\u7a0b\u9002\u7528\u4e8e\u4f7f\u7528 --network host \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

\n
\n

\ud83d\udccc \u73af\u5883\u4fe1\u606f

\n\n
\n

\u7b2c\u4e00\u6b65\uff1a\u786e\u8ba4\u5bb9\u5668\u8fd0\u884c\u72b6\u6001

\n

\u8bf7\u786e\u4fdd\u60a8\u5df2\u4f7f\u7528 Host \u6a21\u5f0f\u542f\u52a8\u5bb9\u5668\uff1a

\n
# \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
\n
\n

\u7b2c\u4e8c\u6b65\uff1a\u914d\u7f6e Fail2Ban \u8fc7\u6ee4\u5668

\n

\u6211\u4eec\u9700\u8981\u521b\u5efa\u89c4\u5219\u6765\u544a\u8bc9 Fail2Ban \u4ec0\u4e48\u662f\u6076\u610f\u884c\u4e3a\u3002

\n

1. \u9632\u6076\u610f\u626b\u63cf\uff08 Bad Request \uff09

\n

\u62e6\u622a\u626b\u63cf\u654f\u611f\u6587\u4ef6\uff08\u5982 .env, wp-login.php\uff09\u7684\u653b\u51fb\u8005\u3002

\n
sudo nano /etc/fail2ban/filter.d/nginx-bad-request.conf\n
\n
[Definition]\nfailregex = ^<HOST> - - .* \"(GET|POST|HEAD) .*\\.(php|asp|aspx|jsp|cgi|env|git|yml|sql|bak|tar|gz|zip|rar|sh) HTTP.*\" (400|401|403|404) .*$\n ^<HOST> - - .* \"(GET|POST|HEAD) .*/(phpmyadmin|admin|setup|manager|dashboard|wp-login|xmlrpc).* HTTP.*\" (400|401|403|404) .*$\nignoregex =\n
\n

2. \u9632\u9ad8\u9891 CC \u653b\u51fb\uff08 Anti-Flood \uff09

\n

\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

\n
sudo nano /etc/fail2ban/filter.d/nginx-cc.conf\n
\n
[Definition]\nfailregex = ^<HOST> - - .* \"(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
\n
\n

\u7b2c\u4e09\u6b65\uff1a\u914d\u7f6e\u76d1\u72f1\uff08jail.local\uff09

\n

\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 chain = DOCKER-USER**\u3002

\n
sudo nano /etc/fail2ban/jail.local\n
\n
[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
\n
\n

\u7b2c\u56db\u6b65\uff1a\u91cd\u542f\u4e0e\u9a8c\u8bc1

\n

1. \u91cd\u542f Fail2Ban

\n
sudo systemctl restart fail2ban\n
\n

2. \u9a8c\u8bc1\u72b6\u6001

\n
sudo fail2ban-client status\n
\n

\u5e94\u770b\u5230\u4ee5\u4e0b\u4e24\u4e2a\u76d1\u72f1\u5904\u4e8e\u6d3b\u52a8\u72b6\u6001\uff1a

\n\n

3. \u9a8c\u8bc1\u9632\u706b\u5899\u89c4\u5219

\n

\u68c0\u67e5 INPUT \u94fe\uff08 Host \u6a21\u5f0f\u8d70\u8fd9\u91cc\uff09\uff1a

\n
sudo iptables -L INPUT -n\n
\n

\u786e\u8ba4\u89c4\u5219\u4e2d\u51fa\u73b0\u9488\u5bf9\u76ee\u6807 IP \u7684 DROP \u6216 REJECT \u8bb0\u5f55\uff0c\u8868\u793a\u5c01\u7981\u751f\u6548\u3002

\n
\n

\u2705 \u5b8c\u6210\uff01
\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

\n", "date_published": "2025-11-28T07:45:59+00:00", "title": "fail2ban \u4fdd\u62a4 nginx \u65b9\u6848", "id": "t/1175687" }, { "author": { "url": "member/qinrui", "name": "qinrui", "avatar": "https://cdn.v2ex.com/avatar/3a2b/ef30/273149_large.png?m=1666491093" }, "url": "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": "t/1174657", "date_published": "2025-11-24T04:26:18+00:00", "content_html": "

\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

\n" }, { "author": { "url": "member/yaocf", "name": "yaocf", "avatar": "https://cdn.v2ex.com/avatar/9297/ff2d/465954_large.png?m=1737011357" }, "url": "t/1160074", "date_modified": "2025-09-18T01:04:19+00:00", "content_html": "

\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\nhttps://oracleusa.ml/-----https://www.google.com/

\n

\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

\n

\u6216\u8005\u8fd9\u7c7b\u670d\u52a1\u8be5\u7528\u4ec0\u4e48\u5173\u952e\u8bcd\u641c\uff1f

\n

\u611f\u89c9\u6709\u70b9\u50cf\u865a\u62df\u6d4f\u89c8\u5668\u4e86\u90fd\u3002

\n", "date_published": "2025-09-18T01:02:54+00:00", "title": "oracleusa.ml \u7684\u5b9e\u73b0\u539f\u7406", "id": "t/1160074" }, { "author": { "url": "member/puremaker", "name": "puremaker", "avatar": "https://cdn.v2ex.com/avatar/cc2d/7de5/647810_large.png?m=1754989837" }, "url": "t/1158023", "title": "\u5c1d\u8bd5\u81ea\u5df1\u914d\u7f6e\u8f6c\u53d1\u540e\u7aef\u8bf7\u6c42\u7684\u65f6\u5019\u6709\u4e2a\u7591\u95ee", "id": "t/1158023", "date_published": "2025-09-09T06:39:16+00:00", "content_html": "

\u9996\u5148\u8fd9\u4e2a\u662f\u524d\u7aef\u9879\u76ee\u9875\u9762\u7684\u914d\u7f6e\uff0c\u6ca1\u5565\u95ee\u9898\uff0c

\n
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
\n

\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

\n
location /api {\n proxy_pass http://localhost:60101;\n }\n
\n

\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

\n
location /abc {\n proxy_pass http://localhost:60101;\n }\n\u6216\u8005\nlocation /xxxx {\n proxy_pass http://localhost:60101;\n }\n
\n

\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

\n" }, { "author": { "url": "member/fhrui0706", "name": "fhrui0706", "avatar": "https://cdn.v2ex.com/gravatar/dfb33a297aa3454793b3ee4818d22381?s=73&d=retro" }, "url": "t/1150489", "date_modified": "2025-08-06T13:26:04+00:00", "content_html": "

\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

\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": "t/1150489" }, { "author": { "url": "member/deqiying", "name": "deqiying", "avatar": "https://cdn.v2ex.com/avatar/a7c6/89dd/722796_large.png?m=1753358764" }, "url": "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
\u73b0\u5728\u9879\u76ee\u7684\u90e8\u7f72\u6709\u70b9\u4e71\uff0c\u5934\u5927\uff0c\u5c0f\u767d\u6765\u6c42\u6551\u4e86
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
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
3.\u540c\u4e00\u4e2a\u9879\u76ee\u53ef\u4ee5\u901a\u8fc7\u57df\u540d\u6216\u8005 path \u533a\u5206

\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
\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": "t/1149876" }, { "author": { "url": "member/kyonn", "name": "kyonn", "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro" }, "url": "t/1149767", "date_modified": "2025-08-05T00:55:28+00:00", "content_html": "

\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

\n

\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

\n
    \n
  1. 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
  2. \n
  3. \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
  4. \n
\n

\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

\n

\u6ce8\uff1a

\n
    \n
  1. \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
  2. \n
  3. \u53ef\u4ee5\u4fee\u6539\u53cd\u4ee3 upstream docker \u7684\u914d\u7f6e\uff0c\u56e0\u4e3a\u662f\u81ea\u5df1\u90e8\u7f72\u7684\u3002
  4. \n
\n
location /git/ {\n proxy_http_version 1.1;\n proxy_pass http://192.168.1.13:8085/;\n}\n
\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": "t/1149767" }, { "author": { "url": "member/kyonn", "name": "kyonn", "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro" }, "url": "t/1149519", "date_modified": "2025-08-03T14:41:05+00:00", "content_html": "

\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

\n

\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

\n

\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

\n

\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

\n

\u8fd9\u7bc7\u6587\u7ae0\u8bf4\u4e0d\u4f1a\u89e6\u53d1 rewrite \uff0cAI \u7684\u56de\u7b54\u662f\u4f1a\u89e6\u53d1 rewrite \u3002

\n
location /name/ {\n rewrite /name/([^/]+) /users?name=$1 break;\n proxy_passs http://user-center/main/basicinfo/;\n}\n
\n

\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

\n

\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

\n", "date_published": "2025-08-02T14:04:33+00:00", "title": "nginx rewrite \u6307\u4ee4\u7684\u95ee\u9898", "id": "t/1149519" }, { "author": { "url": "member/kyonn", "name": "kyonn", "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro" }, "url": "t/1149311", "date_modified": "2025-08-02T11:26:27+00:00", "content_html": "

\u6284\u6765\u7684 nginx \u914d\u7f6e\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

\n
    \n
  1. \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
  2. \n
  3. \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
  4. \n
\n\n
\nlocation ~ \"(?x)^/git(?<path>/.*/(?: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(?<path>/.*/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(?<path>/.*)$ {\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
\n", "date_published": "2025-08-01T07:44:12+00:00", "title": "\u95ee\u4e2a nginx \u914d\u7f6e\u95ee\u9898", "id": "t/1149311" }, { "author": { "url": "member/zhazhibao", "name": "zhazhibao", "avatar": "https://cdn.v2ex.com/gravatar/4cbf0bd1aef4d56fb9bb3fb2577f82e8?s=73&d=retro" }, "url": "t/1140901", "title": "\u8bf7\u95ee\u4e0b\u4e3a\u5565\u5fae\u4fe1\u5ba2\u6237\u7aef\u8bbf\u95ee\u5230 nginx \u6ca1\u6709\u53c2\u6570\u4e86\uff1f", "id": "t/1140901", "date_published": "2025-06-25T04:40:11+00:00", "content_html": "

\u4f8b\u5982\u5fae\u4fe1 APP \u4e2d\u70b9\u51fb a.cn/10003 \uff0c\u5230 nginx \u5c42\u6ca1\u6709\u4e86 10003 \u53c2\u6570\uff1f

\n" }, { "author": { "url": "member/baalchina", "name": "baalchina", "avatar": "https://cdn.v2ex.com/gravatar/80835c340888c4974dea3bdbfedf22f5?s=73&d=retro" }, "url": "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": "t/1131690", "date_published": "2025-05-14T06:05:35+00:00", "content_html": "

\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

\n

\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

\n

\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

\n

\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

\n

\u8c22\u8c22\uff01

\n" }, { "author": { "url": "member/whereFly", "name": "whereFly", "avatar": "https://cdn.v2ex.com/avatar/e4ca/b6f3/469885_large.png?m=1743487710" }, "url": "t/1122559", "title": "\u8bf7\u95ee Nginx \u600e\u4e48\u6dfb\u52a0 CORS \u767d\u540d\u5355\uff1f", "id": "t/1122559", "date_published": "2025-04-01T06:06:42+00:00", "content_html": "

\u6bd4\u5982 a.com \u4e0b\u7684\u56fe\u7247\u3001js \u6587\u4ef6\u7b49\u7b49\uff0c\u53ea\u5141\u8bb8 b.com \u3001c.com \u8c03\u7528\u3002\n\u5176\u4ed6\u57df\u540d\u8c03\u7528\u7684\u8bdd\u5c31\u663e\u793a 404 \u6216\u8005 403 \u3002

\n" }, { "author": { "url": "member/vincentWdp", "name": "vincentWdp", "avatar": "https://cdn.v2ex.com/gravatar/e8f4a89b48b07934dd9196059a252ed2?s=73&d=retro" }, "url": "t/1120174", "date_modified": "2025-03-21T08:15:28+00:00", "content_html": "

\u5148\u53e0\u7532: \u6211\u662f\u4e1a\u4f59\u8fd0\u7ef4.

\n

\u6628\u5929, \u5728\u5b9d\u5854\u4e0a\u5bf9\u7ebf\u4e0a\u670d\u52a1 A \u4fee\u6539 proxy_pass, \u7aef\u53e3\u4ece 7511 \u6539\u6210 7501:

\n
location / { \n proxy_pass http://localhost:7501; \n}\n
\n

\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.

\n

\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.

\n

\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.

\n

\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.

\n

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~~

\n

nginx version: nginx/1.20.2

\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": "t/1120174" }, { "author": { "url": "member/a33291", "name": "a33291", "avatar": "https://cdn.v2ex.com/avatar/e29e/fd46/582789_large.png?m=1752114948" }, "url": "t/1120024", "date_modified": "2025-03-21T01:25:55+00:00", "content_html": "\u4ee5\u8fd9\u4e2a\u914d\u7f6e\u4e3a\u4f8b
location /test {
proxy_pass http://localhost/
}
\u5f53\u8bf7\u6c42 /test/api?a=1 \u65f6 \u5b9e\u9645\u5411\u4e0a\u6e38\u53d1\u8d77\u7684\u5730\u5740\u4e3a http://localhost/api?a=1
\u8fd9\u7531 nginx \u7684\u5185\u7f6e\u673a\u5236\u81ea\u52a8\u5b8c\u6210

\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)

\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": "t/1120024" }, { "author": { "url": "member/dabao", "name": "dabao", "avatar": "https://cdn.v2ex.com/avatar/b8db/b975/103604_large.png?m=1456281006" }, "url": "t/1118432", "title": "Nginx \u56db\u5c42\u53cd\u4ee3 QUIC \u5982\u4f55\u4f20\u9012\u5ba2\u6237\u7aef IP", "id": "t/1118432", "date_published": "2025-03-14T06:18:13+00:00", "content_html": "

\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\u8fc7http2\u53ef\u4ee5\u6b63\u5e38\u83b7\u53d6\u5230\u5ba2\u6237\u7aef IP \uff0c\u901a\u8fc7 h3quic\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

\n

\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\u8fc7quic\u83b7\u53d6\u5230\u5ba2\u6237\u7aef IP \u3002

\n

\u4f7f\u7528 quic \u8fde\u63a5\u83b7\u53d6\u5230\u7684 IP

\n
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
\n

\u56db\u5c42 stream \u914d\u7f6e

\n
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
\n

\u7ad9\u70b9\u914d\u7f6e

\n
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
\n" }, { "author": { "url": "member/simple2025", "name": "simple2025", "avatar": "https://cdn.v2ex.com/gravatar/d8be1ee891483e0287a7350aae996608?s=73&d=retro" }, "url": "t/1117051", "date_modified": "2025-03-09T08:50:30+00:00", "content_html": "
    \n
  1. \n

    \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.

    \n
  2. \n
  3. \n

    \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.

    \n
  4. \n
\n

\u7136\u540e\u6211\u7b14\u8bb0\u672c\u5f00\u673a\u4f1a\u81ea\u52a8\u542f\u52a8\u865a\u62df\u673a,nginx.

\n

\u73b0\u5728\u95ee\u9898\u6765\u4e86,\u6211\u7b14\u8bb0\u672c\u91cd\u542f,\u865a\u62df\u673a\u4e5f\u91cd\u542f\u597d\u4e86,

\n

\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?

\n

\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?

\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": "t/1117051" }, { "author": { "url": "member/Gnepre", "name": "Gnepre", "avatar": "https://cdn.v2ex.com/gravatar/02eb6cf12ab2a87843e0f015d95964b4?s=73&d=retro" }, "url": "t/1114042", "title": "\u6211\u662f\u4e0d\u662f\u53ef\u4ee5\u53cd\u5411\u4ee3\u7406\u4e2a V2EX \u7f51\u7ad9?", "id": "t/1114042", "date_published": "2025-02-25T03:16:39+00:00", "content_html": "\u8bf7\u6559\u5927\u4f6c\u4eec\u4e2a\u95ee\u9898
\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": "member/vacuitym", "name": "vacuitym", "avatar": "https://cdn.v2ex.com/gravatar/9d2795bcfa498168b725b3b463b547c6?s=73&d=retro" }, "url": "t/1112077", "date_modified": "2025-02-17T09:10:19+00:00", "content_html": "

\u540c\u6837\u7684\u914d\u7f6e openai \u548c claude \u5c31\u6ca1\u95ee\u9898\uff1a

\n
\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
\n

\u8bf7\u6c42\uff1a

\n

https://chat.xxxxx.com/xai/v1/chat/completions

\n

\u62a5\u9519\uff1a

\n
{\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
\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": "t/1112077" }, { "author": { "url": "member/coolair", "name": "coolair", "avatar": "https://cdn.v2ex.com/avatar/c4fe/52ac/36118_large.png?m=1691894552" }, "url": "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

\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

\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": "t/1110841" }, { "author": { "url": "member/lengrongec", "name": "lengrongec", "avatar": "https://cdn.v2ex.com/avatar/4080/c851/231666_large.png?m=1774849308" }, "url": "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": "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
\u5728\u5bb6\u91cc\u73a9\u5ba2\u4e91\u4e0a\u7528 docker \u90e8\u7f72\u4e86\u5b83\u548c adguard \uff1b
\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": "member/yumerdev93", "name": "yumerdev93", "avatar": "https://cdn.v2ex.com/gravatar/74f42fe2d4f5f39f05b82e0bf0564dfd?s=73&d=retro" }, "url": "t/1106475", "title": "\u5173\u4e8e Nginx \u53cd\u5411\u4ee3\u7406\u6027\u80fd\u8c03\u4f18\u7684\u95ee\u9898\uff0c\u6c42\u6307\u5bfc\ud83d\ude4f", "id": "t/1106475", "date_published": "2025-01-20T06:32:25+00:00", "content_html": "

\u4ee5\u4e0b\u73af\u5883\u5747\u5728 docker \u4e2d\uff0cnginx \u7528 host network \u3002

\n

\u6211\u73b0\u5728\u5728\u7528 Nginx \u4ee3\u7406\u4e00\u4e2a Fastapi \u5e94\u7528\uff0c\u4ece\u5c40\u57df\u7f51\u5185\u5176\u4ed6\u673a\u5668\u901a\u8fc7wrk\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

\n

\u538b\u6d4b\u7ed3\u679c\uff1a

\n
 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
\n

\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

\n

\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

\n

\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

\n" }, { "author": { "url": "member/exqibao", "name": "exqibao", "avatar": "https://cdn.v2ex.com/gravatar/1a4d90c901c0e40b30f1d50929ca7b36?s=73&d=retro" }, "url": "t/1104759", "date_modified": "2025-01-13T08:54:52+00:00", "content_html": "

\u6839\u636e\u8bf7\u6c42\u5934\u5206\u53d1

\n

loc: /aa ==> http://127.0.0.1:28080/aa

\n

pro: /aa ==> http://127.0.0.1:8011/api/

\n

\u5176\u5b83: /aa ==> http://127.0.0.1:8022/api/

\n

\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

\n
\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
\n", "date_published": "2025-01-13T08:46:39+00:00", "title": "nginx \u914d\u7f6e\u6839\u636e\u8bf7\u6c42\u5934\u5206\u53d1\u95ee\u9898", "id": "t/1104759" }, { "author": { "url": "member/kyonn", "name": "kyonn", "avatar": "https://cdn.v2ex.com/gravatar/6c215bea43d005953fda6f3192806fd3?s=73&d=retro" }, "url": "t/1104384", "date_modified": "2025-01-11T11:46:55+00:00", "content_html": "

\u6700\u8fd1\u770b\u5230\u4e0d\u5c11 nginx-proxy-manager \u7684\u63a8\u8350, \u5b83\u80fd\u4e0d\u80fd\u652f\u6301 https://github.com/nginx-proxy/nginx-proxy \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.

\n

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?

\n", "date_published": "2025-01-11T11:46:24+00:00", "title": "\u7528\u8fc7 nginx-proxy-manager \u8bf7\u8fdb, \u54a8\u8be2\u4e2a\u95ee\u9898.", "id": "t/1104384" }, { "author": { "url": "member/AndreasG", "name": "AndreasG", "avatar": "https://cdn.v2ex.com/gravatar/b7b9aaf89d0cd99e801151b80122904e?s=73&d=retro" }, "url": "t/1103834", "date_modified": "2025-01-09T03:16:00+00:00", "content_html": "

\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

\n
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
\n

\u7c7b\u4f3c\u8fd9\u6837\u914d\u7f6e\u4e86 nginx \u4e4b\u540e\n\u76f4\u63a5\u8bbf\u95ee abc.com:10086 \u7aef\u53e3\u8bbf\u95ee\u5168\u90e8\u6ca1\u95ee\u9898\n\u4f46\u662f\u8f6c\u53d1\u7684\u7b2c\u4e8c\u4e2a\u7aef\u53e3

\n
abc.com:10086/book\n
\n

\u5e76\u4e0d\u80fd\u6210\u529f\u8f6c\u53d1\u5230 192.168.0.100:10010\n\u6d4f\u89c8\u5668\u8c03\u8bd5\u53d1\u73b0\u4f7f\u7528 abc.com:10086/book\n\u53d1\u51fa\u7684\u8bf7\u6c42\u4e2d\ncss js \u4e4b\u7c7b\u7684\u90fd\u662f

\n
abc.com:10086/static/?.css\nabc.com:10086/static/?.js\n
\n

\u800c\u5e76\u6ca1\u6709\u5230

\n
abc.com:10086/book/static/?.css\nabc.com:10086/book/static/?.js\n
\n

\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

\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": "t/1103834" }, { "author": { "url": "member/ShimaKazeLiu", "name": "ShimaKazeLiu", "avatar": "https://cdn.v2ex.com/avatar/21a4/67f3/661144_large.png?m=1755567618" }, "url": "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": "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

\u6574\u4e2a\u94fe\u8def\u5c31\u662f\u6211\u5bb6->\u670d\u52a1\u5668->\u5916\u7f51

\u7136\u540e\u7f51\u5740\u662f\u963f\u91cc\u4e91\u4e70\u7684\uff0cdns \u89e3\u6790\u5230\u4e86 cf

cf \u6dfb\u52a0\u4e86\u4e00\u4e2a emby \u7684 dns \u8bb0\u5f55 \u6307\u5411\u4e86\u8fd9\u4e2a\u670d\u52a1\u5668

\u7136\u540e\u5728 nginx proxy manager \u914d\u4e86\u4e00\u6761 ssl \u8bc1\u4e66\u7528\u7684 Let's Encrypt\t

\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

\u8fd9\u4e2a\u662f\u4e0d\u662f APP \u7684\u95ee\u9898\uff0c\u6709\u6ca1\u6709 Emby \u7684\u5927\u4f6c\u5e2e\u6211\u770b\u770b" }, { "author": { "url": "member/ezekiel222", "name": "ezekiel222", "avatar": "https://cdn.v2ex.com/gravatar/f2fb069a18b76766600a176071138a51?s=73&d=retro" }, "url": "t/1099224", "date_modified": "2024-12-21T02:30:34+00:00", "content_html": "

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

\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": "t/1099224" }, { "author": { "url": "member/andyfan", "name": "andyfan", "avatar": "https://cdn.v2ex.com/avatar/74b4/ec7d/161368_large.png?m=1734348969" }, "url": "t/1097996", "date_modified": "2024-12-16T11:47:47+00:00", "content_html": "

\u6211\u60f3\u81ea\u5efa\u4e00\u4e2a docker \u7684\u955c\u50cf\u6e90, \u5199\u4e86\u4e2a\u914d\u7f6e\u6587\u4ef6\u53cd\u4ee3 registry-1.docker.io, \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

\n

\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 registry-1.docker.io \u5bfc\u81f4\u8fd4\u56de 404, \u5e0c\u671b\u6709\u719f\u6089 nginx \u7684\u8001\u54e5\u5e2e\u5fd9\u770b\u770b, \u8fd9\u8981\u600e\u4e48\u4fee\u6539?

\n

\u6211\u7684 server \u914d\u7f6e\u5982\u4e0b

\n
\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
\n", "date_published": "2024-12-16T11:46:35+00:00", "title": "\u8bf7\u6559\u4e0b nginx \u53cd\u4ee3\u914d\u7f6e", "id": "t/1097996" }, { "author": { "url": "member/gotonull", "name": "gotonull", "avatar": "https://cdn.v2ex.com/gravatar/6b0065b366c96d0c61a592b5fa49c4a3?s=73&d=retro" }, "url": "t/1095330", "title": "nginx \u914d\u7f6e\u95ee\u9898\u6c42\u89e3\u7b54", "id": "t/1095330", "date_published": "2024-12-05T12:11:58+00:00", "content_html": "

\u95ee\u9898\u63cf\u8ff0\uff1aa \u670d\u52a1\u5668\u7684 nginx \u670d\u52a1\u4f1a\u5c06 /aisp/approval/ \u8def\u5f84\u7684\u8bf7\u6c42\u8f6c\u53d1\u7ed9\u6211\uff0c\u6211\u6536\u5230\u8bf7\u6c42\u540e\u6839\u636euser-agent\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/home/centos/web/h5\u76ee\u5f55\u4e0b\u54cd\u5e94\u5bf9\u5e94\u7684\u9759\u6001\u6587\u4ef6\u3002\u5982\u679c\u662f/aisp/approval/api/\u8def\u5f84\u4e0b\u7684\u8bf7\u6c42\u5219\u8bf7\u6c42\u540e\u7aef\u670d\u52a1\uff0c\u5f53\u524d\u7684\u914d\u7f6e\uff1a

\n
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
\n

\u73b0\u5728\u7684\u95ee\u9898\u662f\u901a\u8fc7\u79fb\u52a8\u7aef\u8bf7\u6c42a.com/aisp/approval/workOrder/orderHandlerDetails,error.log \u4f1a\u62a5\uff1a

\n
open() \"/usr/local/nginx/html/home/centos/supervision/web/h5/index.html\" failed (2: No such file or directory)\n
\n

/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.com/aisp/approval/workOrder/\u65f6\u54cd\u5e94/home/centos/supervision/web/h5/\u76ee\u5f55\u4e0b\u7684 index.html

\n" }, { "author": { "url": "member/jalena", "name": "jalena", "avatar": "https://cdn.v2ex.com/gravatar/b966aaabe36d4274eba28ef301495149?s=73&d=retro" }, "url": "t/1095168", "title": "Nginx \u6d41\u91cf\u5f02\u5e38\uff0c\u8bf7\u5927\u4f6c\u652f\u62db~", "id": "t/1095168", "date_published": "2024-12-05T02:59:08+00:00", "content_html": "

\u4e4b\u524d\u4e00\u76f4\u597d\u597d\u7684\uff0c\u4eca\u5929\u7a81\u7136\u6536\u5230\u6d41\u91cf\u544a\u8b66\u3002

\n

\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

\n

\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

\n" }, { "author": { "url": "member/raysonlu", "name": "raysonlu", "avatar": "https://cdn.v2ex.com/gravatar/f49e53bf69e1be6aad8d4cb7f6ed6d74?s=73&d=retro" }, "url": "t/1094763", "title": "nginx \u8bfb\u53d6 ssl \u8bc1\u4e66\u7684\u6743\u9650\u95ee\u9898\u8bf7\u6559", "id": "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

\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

\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": "member/maninnet", "name": "maninnet", "avatar": "https://cdn.v2ex.com/gravatar/39526d5c2fdb6b5a2c1de4ccd603fdbd?s=73&d=retro" }, "url": "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": "t/1094593", "date_published": "2024-12-03T02:29:40+00:00", "content_html": "

\u6211\u624b\u4e0a\u53ea\u6709\u4e00\u4e2a\u4e8c\u7ea7\u57df\u540d sub.abc.com \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 sub.abc.com/alist \u548c sub.abc.com/nas \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

\n" }, { "author": { "url": "member/AndreasG", "name": "AndreasG", "avatar": "https://cdn.v2ex.com/gravatar/b7b9aaf89d0cd99e801151b80122904e?s=73&d=retro" }, "url": "t/1093382", "title": "\u914d\u7f6e\u8bc1\u4e66\u76f8\u5173\u7684\u95ee\u9898", "id": "t/1093382", "date_published": "2024-11-28T06:17:08+00:00", "content_html": "

\u624b\u4e0a\u7684\u8d44\u6e90

\n
    \n
  1. \u6211\u5bb6\u53ea\u6709\u4e00\u6761\u5bb6\u7528\u5bbd\u5e26\u610f\u5473\u7740\u6211\u65e0\u6cd5\u4f7f\u7528 80 \u3001443 \u7aef\u53e3
  2. \n
  3. \u5bb6\u91cc\u662f\u52a8\u6001 ip \uff0c\u5e26 ipv4 \u516c\u7f51
  4. \n
  5. \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
  6. \n
  7. \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
  8. \n
  9. \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
  10. \n
  11. \u6211\u5728\u963f\u91cc\u4e91\u7533\u8bf7\u4e86\u514d\u8d39\u7684 3 \u6708\u6709\u6548\u671f\u8bc1\u4e66
  12. \n
  13. \u5bb6\u91cc Esxi \u5f00\u4e86\u4e00\u4e2a\u7fa4\u6656\u548c\u4e24\u4e2a linux \u865a\u62df\u673a
  14. \n
\n

\u76ee\u524d\u7684\u9700\u6c42

\n
\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
\n

\u76ee\u524d\u9047\u5230\u7684\u95ee\u9898

\n
    \n
  1. \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
  2. \n
  3. 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
  4. \n
\n

\u95ee\u9898

\n
    \n
  1. \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
  2. \n
  3. \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
  4. \n
  5. \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
  6. \n
\n" }, { "author": { "url": "member/myangshu", "name": "myangshu", "avatar": "https://cdn.v2ex.com/avatar/f35a/d7cf/660164_large.png?m=1729678097" }, "url": "t/1093078", "date_modified": "2024-11-27T07:13:43+00:00", "content_html": "

\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

\n

http\uff1a//localhost\uff1a30

\n

\u4f46\u662f\u8f6c\u53d1\u8fc7\u53bb\u5c31\u53d8\u6210\u4e86

\n

http\uff1a//localhost/abc/

\n

\u8bf7\u95ee\u8fd9\u4e2a\u6709\u4ec0\u4e48\u89e3\u51b3\u529e\u6cd5\u561b\uff1f

\n", "date_published": "2024-11-27T06:10:26+00:00", "title": "\u5173\u4e8e nginx \u7684\u4e00\u4e9b\u63d0\u95ee", "id": "t/1093078" }, { "author": { "url": "member/dunhanson", "name": "dunhanson", "avatar": "https://cdn.v2ex.com/avatar/d2b2/2ccb/172659_large.png?m=1755681128" }, "url": "t/1092345", "title": "nginx \u9650\u6d41\u5931\u8d25\u7684\u5947\u602a\u95ee\u9898", "id": "t/1092345", "date_published": "2024-11-25T03:33:45+00:00", "content_html": "

\u95ee\u9898\u63cf\u8ff0

\n

~/info \u9650\u6d41\u5931\u8d25

\n

~info \u548c~/info \u90fd\u80fd\u5339\u914d\u5230\u503c\uff0c$limit_key_pc_page_info \u7684\u503c\u8f93\u51fa page_info

\n

\u4e3a\u4ec0\u4e48\u52a0/\u7b26\u53f7\u4f1a\u5f71\u54cd\u9650\u6d41\uff1f$limit_key_pc_page_info \u91cc\u9762\u6709\u503c

\n

1 \u3001nginx \u914d\u7f6e

\n
# \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
\n

2 \u3001\u6d4b\u8bd5\u6548\u679c

\n
curl http://test.dunhanson.com/info-558860051.html\n
\n

\u8f93\u51fa: /info-558860051.html page_info

\n" }, { "author": { "url": "member/awanganddong", "name": "awanganddong", "avatar": "https://cdn.v2ex.com/gravatar/e482df556a9ac0e4553da45a819ba931?s=73&d=retro" }, "url": "t/1091390", "date_modified": "2024-11-21T01:52:26+00:00", "content_html": "

\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

\n

\u5982\u679c\u5728 nginx \u914d\u7f6e\u4e2d\u589e\u52a0\u4e0b\u8fb9\u51e0\u9879\u5c31\u62a5\u4e0a\u8fb9\u7684\u9519\u8bef\u3002

\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

\u5982\u679c\u53bb\u9664\u8fd9\u51e0\u9879\u5c31\u6b63\u5e38\u4e86\u3002

\n

\u6240\u4ee5\u60f3\u8bf7\u95ee\u4e0b\uff0c\u8fd9\u79cd\u60c5\u51b5\u662f\u600e\u4e48\u9020\u6210\u7684\u3002\u4e0d\u7406\u89e3\u3002

\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": "t/1091390" }, { "author": { "url": "member/importmeta", "name": "importmeta", "avatar": "https://cdn.v2ex.com/avatar/2018/6513/562972_large.png?m=1764517099" }, "url": "t/1087129", "date_modified": "2024-11-06T06:31:46+00:00", "content_html": "

docker \u73af\u5883\u4e0b, \u5916\u90e8\u6709\u4e2a nginx \u53cd\u5411\u4ee3\u7406, \u4ee3\u7406\u4e86\u4e00\u4e2a\u5185\u90e8\u7684 nginx.

\n
 # \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
\n

\u6211\u5185\u90e8\u7684 official \u7684 nignx \u76f4\u63a5\u7528\u7aef\u53e3\u8bbf\u95ee, \u662f\u80fd\u770b\u5230 favicon \u7684.

\n

\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.

\n

\u95ee\u8fc7 AI \u4e86, \u8001\u662f\u7167\u7740\u7ed3\u679c\u56de\u7b54.

\n

\u4e3a\u4ec0\u4e48\u554a? \u8c22\u8c22\u5404\u4f4d\u4e86.

\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": "t/1087129" }, { "author": { "url": "member/waringid", "name": "waringid", "avatar": "https://cdn.v2ex.com/avatar/4abc/9add/101794_large.png?m=1730769902" }, "url": "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
a.example.com -> 192.168.1.10:3000
b.example.com -> 192.168.2.10:8900

\u60f3\u8981\u5b9e\u73b0\u7684\u6548\u679c\uff1a
a.example.com \u9650\u5236\u8bbf\u95ee\u5e26\u5bbd\u4e3a 2M \uff08\u5916\u7f51\u8bbf\u95ee\uff0c\u4e0d\u9650\u5236\u8bbf\u95ee 192.168.1.10 \uff09
b.example.com \u9650\u5236\u8bbf\u95ee\u5e26\u5bbd\u4e3a 3M (\u5916\u7f51\u8bbf\u95ee\uff09
\u5176\u5b83\u7684\u57df\u540d\u4e0d\u9650\u5236

\u5c1d\u8bd5\u8fc7\u7684\u65b9\u6848\uff1a
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
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

\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": "t/1086681" }, { "author": { "url": "member/KadeDivent", "name": "KadeDivent", "avatar": "https://cdn.v2ex.com/gravatar/4e8c3ed0a1e25d5fbdbe7eb637fdb0ed?s=73&d=retro" }, "url": "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": "t/1085831", "date_published": "2024-11-01T09:58:43+00:00", "content_html": "

\u8fc1\u79fb\u4e86\u4e00\u4e2a headscale \u670d\u52a1\u7aef\uff0c\u53cd\u5411\u4ee3\u7406\u914d\u7f6e\u4e86 headscale-ui \u7684\u9759\u6001\u9875\u9762

\n

\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

\n

\u4f7f\u7528\u7684\u5747\u4e3a rpm \u5305

\n

nginx v1.20.1 \u662f\u5b98\u65b9\u6e90\u4e2d\u4e0b\u8f7d

\n

nginx v1.26.2 \u662f\u4ece nginx \u6e90\u4e2d\u4e0b\u8f7d

\n
\n

\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

\n

\u4e24\u4e2a\u7ad9\u70b9\u914d\u7f6e\u5b8c\u5168\u4e00\u6837\uff0c\u662f\u76f4\u63a5\u590d\u5236\u8fc7\u53bb\u7684

\n

\u65b0\u7248\u672c\u7684 nginx \u65e5\u5fd7\u4e2d\u6ca1\u6709\u76f8\u5173\u8bbf\u95ee\u65e5\u5fd7

\n

\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

\n
\n

\u4ee5\u4e0b\u662f\u65e5\u5fd7\u4e0e\u914d\u7f6e

\n

\u7ad9\u70b9\u4e3b\u8981\u914d\u7f6e\u5982\u4e0b

\n
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
\n

headscale \u7684\u90e8\u5206\u65e5\u5fd7\u5982\u4e0b

\n
Nov 01 17:13:17 xxxxxx tailscaled[2145341]: control: LoginInteractive -> 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->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->xx.xx.xx.xx:8082: read: connection reset by peer\n
\n

nginx \u7684\u7248\u672c\u4fe1\u606f\u5982\u4e0b

\n

\u65e7\u670d\u52a1\u5668

\n
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
\n

\u65b0\u670d\u52a1\u5668

\n
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
\n
\n

\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

\n
\n" }, { "author": { "url": "member/xiaochena", "name": "xiaochena", "avatar": "https://cdn.v2ex.com/avatar/375d/caee/487582_large.png?m=1729752063" }, "url": "t/1083249", "date_modified": "2024-10-24T10:41:44+00:00", "content_html": "

\u5728\u8bf7\u6c42\u5982 /_next/static/media/page-main-image.0b61c706.png \u8fd9\u6837\u7684\u6587\u4ef6\u65f6

\n

\u8fd9\u6bb5\u914d\u7f6e\u53ef\u4ee5\u6b63\u5e38\u8fd0\u884c

\n
 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
\n

\u8fd9\u6bb5\u914d\u7f6e\u5374\u627e\u4e0d\u5230\u6587\u4ef6\u3001\u54cd\u5e94\u4f53\u8fd8\u4f1a\u53d8\u6210 308 \u91cd\u5b9a\u5411

\n
 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
\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": "t/1083249" }, { "author": { "url": "member/LeeLou", "name": "LeeLou", "avatar": "https://cdn.v2ex.com/gravatar/1b1d6e99f3c26b0754145f8453e2063c?s=73&d=retro" }, "url": "t/1080932", "title": "\u6c42\u89e3 nginx \u53cd\u4ee3\u67d0\u5821\u5792\u673a 443 \u9875\u9762\u51fa\u73b0\u95ee\u9898", "id": "t/1080932", "date_published": "2024-10-16T11:29:55+00:00", "content_html": "

\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

\n

\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

\n

\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

\n" }, { "author": { "url": "member/dunhanson", "name": "dunhanson", "avatar": "https://cdn.v2ex.com/avatar/d2b2/2ccb/172659_large.png?m=1755681128" }, "url": "t/1069698", "date_modified": "2024-09-02T10:20:54+00:00", "content_html": "

nginx if \u8bed\u53e5 return 403 \uff0c\u6ca1\u529e\u6cd5\u8df3\u8f6c\u81ea\u5b9a\u4e49 403 \u9875\u9762

\n

\u8fd4\u56de\u7684 403 \u8fd8\u662f nginx \u81ea\u5e26\u7684 403 \u9875\u9762

\n
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
\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": "t/1069698" }, { "author": { "url": "member/ab", "name": "ab", "avatar": "https://cdn.v2ex.com/avatar/2cd8/7697/76017_large.png?m=1725000948" }, "url": "t/1069052", "date_modified": "2024-08-30T07:06:30+00:00", "content_html": "

http{\ndeny 192.168.6.8;\n...\nserver {\nlisten 443 ssl;\nhttp2 on;\nserver_name example.com;\n...\nif ($http_user_agent ~* \"curl\") {\nreturn 406;\n}\n}\n}\n\u5ba2\u6237\u7aef 192.168.6.8 \u4f7f\u7528 curl -I example.com \u65f6\uff0c\u8fd4\u56de 406 \uff0c\u96be\u9053 if \u6bd4 http \u6bb5\u7684 deny ip \u7684\u4f18\u5148\u7ea7\u8fd8\u9ad8\u5417\uff1f

\n", "date_published": "2024-08-30T06:57:12+00:00", "title": "\u8bf7\u6559 nginx deny \u4f18\u5148\u7ea7\u7684\u95ee\u9898\u3002", "id": "t/1069052" }, { "author": { "url": "member/Aicnal", "name": "Aicnal", "avatar": "https://cdn.v2ex.com/avatar/257e/3a01/670465_large.png?m=1722351747" }, "url": "t/1067478", "date_modified": "2024-08-24T07:19:36+00:00", "content_html": "

\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\u4e3a502\uff0c\u65e0\u6cd5\u6b63\u5e38\u8bbf\u95ee \u6211\u770b\u4e86\u4e0berror.log\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\u662fhttps\uff0c\u800c\u4e14\u4ee3\u7406\u670d\u52a1\u5668curl\u80fd\u6b63\u5e38\u83b7\u53d6\u5230\u5185\u5bb9\n\u8fd9\u4e2a\u662f\u6e90\u7ad9\u7684caddyfile

\n
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
\n

\u8fd9\u4e2a\u662f\u4ee3\u7406\u670d\u52a1\u5668\u7684nginx.conf\uff0c\u672a\u4f7f\u7528ssl

\n
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
\n

error.log\u5982\u4e0b

\n
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
\n", "date_published": "2024-08-24T07:14:58+00:00", "title": "\u6c42\u6559\u5173\u4e8e\u53cd\u4ee3\u7684\u95ee\u9898", "id": "t/1067478" }, { "author": { "url": "member/xinzi", "name": "xinzi", "avatar": "https://cdn.v2ex.com/avatar/3e06/67c3/492586_large.png?m=1693106110" }, "url": "t/1066197", "date_modified": "2024-08-19T14:59:37+00:00", "content_html": "

\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

\n
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
\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": "t/1066197" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1065205", "date_modified": "2024-08-15T05:22:30+00:00", "content_html": "

\u6bcf\u5929\u539f\u56e0\u90fd\u4e0d\u4e00\u6837\uff0c\u8fd9\u662f\u4eca\u5929\u7684\u65e5\u5fd7

\n
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
\n

\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

\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": "t/1065205" }, { "author": { "url": "member/kaf", "name": "kaf", "avatar": "https://cdn.v2ex.com/gravatar/b27d0a8a407a1268454fd29288c69d94?s=73&d=retro" }, "url": "t/1064581", "title": "openresty \u600e\u4e48\u4fee\u6539\u4ee3\u7406\u7ad9\u7684\u6587\u4ef6\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef", "id": "t/1064581", "date_published": "2024-08-13T03:27:17+00:00", "content_html": "

\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

\n" }, { "author": { "url": "member/EthZhang", "name": "EthZhang", "avatar": "https://cdn.v2ex.com/avatar/970d/38be/672098_large.png?m=1776678756" }, "url": "t/1064164", "title": "\u6709\u5565\u5e73\u66ff resend\u3001ZeptoMail \u7684\u56fd\u5185\u89e3\u51b3\u65b9\u6848\u561b\uff1f", "id": "t/1064164", "date_published": "2024-08-11T11:02:25+00:00", "content_html": "

\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...

\n" }, { "author": { "url": "member/cokyhe", "name": "cokyhe", "avatar": "https://cdn.v2ex.com/gravatar/6d12c606f4ec41400c00a0e946d1bd87?s=73&d=retro" }, "url": "t/1062404", "title": "\u6c42\u6551\uff1a\u5c4f\u853d\u722c\u866b\u8bd5\u4e86 2 \u5929\uff0c\u6ca1\u6210\u529f", "id": "t/1062404", "date_published": "2024-08-04T09:16:28+00:00", "content_html": "

\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:

\n
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
\n

\u4ee5\u4e0b\u662f\u5b8c\u6574\u914d\u7f6e

\n
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
\n" }, { "author": { "url": "member/Raymondx", "name": "Raymondx", "avatar": "https://cdn.v2ex.com/avatar/b085/5af5/669799_large.png?m=1722155482" }, "url": "t/1060674", "title": "[\u6c42\u52a9\u5927\u4f6c] Nginx \u53cd\u4ee3\u591a\u4e2a\u7f51\u7ad9\u51fa\u73b0\u4e32\u7ad9\u95ee\u9898", "id": "t/1060674", "date_published": "2024-07-28T08:51:12+00:00", "content_html": "

\u4f7f\u7528\u5b9d\u5854\u9762\u677f 8.2.0 \u3001Nginx1.22.1 \uff0c\u7cfb\u7edf\u4e3a Ubuntu 20.04LTS

\n

\u64cd\u4f5c\uff1a\u4f7f\u7528 Nginx \u53cd\u4ee3\u4e86\u4e09\u4e2a\u7f51\u7ad9

\n

\u7f51\u7ad9\u4e00\u4e3a\uff1amap.~.com \u2192 81 \u7aef\u53e3\uff0c\u5f00\u542f https

\n

\u7f51\u7ad9\u4e8c\u4e3a\uff1afrp.~.com \u2192 7800 \u7aef\u53e3\uff0c\u672a\u5f00\u542f https

\n

\u7f51\u7ad9\u4e09\u4e3a\uff1ar730test.~.com \u2192 81 \u7aef\u53e3\uff0c\u672a\u5f00\u542f https

\n

\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

\n

\u95ee\u9898\uff1a\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

\n

\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

\n

\"\"

\n

Nginx \u914d\u7f6e\u6587\u4ef6\u5982\u4e0b

\n

https://pastecode.io/s/uni4h5f6

\n

https://pastecode.io/s/80nxwxhx

\n

https://pastecode.io/s/0j74wdcn

\n" }, { "author": { "url": "member/wzdc", "name": "wzdc", "avatar": "https://cdn.v2ex.com/gravatar/4783716584813dc2fd65e5b8caf1aa65?s=73&d=retro" }, "url": "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
\u5982\u679c\u91cd\u5b9a\u5411\u7684\u94fe\u63a5\u5305\u542b example.com \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
\u5426\u5219\u7f13\u5b58 10 \u5206\u949f\uff0c\u7f13\u5b58\u952e\u4e3a $scheme$request_method$host$request_uri$http_authorization

\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": "t/1060477" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86