{"id":891,"date":"2021-12-21T15:01:51","date_gmt":"2021-12-21T07:01:51","guid":{"rendered":"https:\/\/www.wccass.com\/?p=891"},"modified":"2021-12-21T15:02:04","modified_gmt":"2021-12-21T07:02:04","slug":"nginx","status":"publish","type":"post","link":"https:\/\/blog.tongyunli.top\/?p=891","title":{"rendered":"nginx"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"nginx\">nginx<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_1\">\u5b89\u88c5<\/h2>\n\n\n\n<p>\u4e0b\u8f7d\u5fc5\u8981\u7ec4\u4ef6<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>nginx\u4e0b\u8f7d\u5730\u5740http:\/\/nginx.org\/en\/download.html<\/li><li>pcre\u5e93\u4e0b\u8f7d\u5730\u5740\uff0cnginx\u9700\u8981http:\/\/sourceforge.net\/projects\/pcre\/files\/pcre\/<\/li><li>zlib\u4e0b\u8f7d\u5730\u5740\uff0cnginx\u9700\u8981http:\/\/www.zlib.net\/<\/li><li>openssl\u4e0b\u8f7d\u5730\u5740\uff0cnginx\u9700\u8981https:\/\/github.com\/openssl\/openssl<\/li><\/ul>\n\n\n\n<p>\u5728\u540c\u7ea7\u76ee\u5f55\u4e0b,\u89e3\u538b\u5b89\u88c5zlib\u3001openssl\u3001pcre<\/p>\n\n\n\n<p>\u8fdb\u5165nginx\u76ee\u5f55\uff0c\u8fdb\u884c\u914d\u7f6e\u5b89\u88c5<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">.\/configure \\\n --prefix<strong>=<\/strong>\/usr\/local\/nginx \\\n --with-http_ssl_module \\\n --with-http_flv_module \\\n --with-http_stub_status_module \\\n --with-http_gzip_static_module \\\n --with-pcre<strong>=<\/strong>..\/pcre-8.39 \\\n --with-zlib<strong>=<\/strong>..\/zlib-1.2.8 \\ \n --with-openssl<strong>=<\/strong>..\/openssl-master\n<\/pre>\n\n\n\n<p>\u4e0b\u9762\u53ef\u76f4\u63a5\u590d\u5236\u7c98\u8d34<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">.\/configure --prefix<strong>=<\/strong>\/usr\/local\/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre<strong>=<\/strong>..\/pcre-8.39 --with-zlib<strong>=<\/strong>..\/zlib-1.2.8 --with-openssl<strong>=<\/strong>..\/openssl-master\n<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u5b89\u88c5<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ make &amp;&amp; sudo make install\n<\/pre>\n\n\n\n<p>Nginx\u4f1a\u88ab\u5b89\u88c5\u5728\/usr\/local\/nginx\u76ee\u5f55\u4e0b\uff08\u4e5f\u53ef\u4ee5\u4f7f\u7528\u53c2\u6570&#8211;prefix=\u6307\u5b9a\u81ea\u5df1\u9700\u8981\u7684\u4f4d\u7f6e\uff09\uff0c \u5b89\u88c5\u6210\u529f\u540e \/usr\/local\/nginx \u76ee\u5f55\u4e0b\u6709\u56db\u4e2a\u5b50\u76ee\u5f55\u5206\u522b\u662f\uff1aconf\u3001html\u3001logs\u3001sbin \u3002 \u5176\u4e2d Nginx \u7684\u914d\u7f6e\u6587\u4ef6\u5b58\u653e\u4e8e conf\/nginx.conf\uff0c bin\u6587\u4ef6\u662f\u4f4d\u4e8e sbin \u76ee\u5f55\u4e0b\u7684 nginx \u6587\u4ef6\u3002 \u786e\u4fdd\u7cfb\u7edf\u7684 80 \u7aef\u53e3\u6ca1\u88ab\u5176\u4ed6\u7a0b\u5e8f\u5360\u7528\uff0c\u8fd0\u884c sbin\/nginx \u547d\u4ee4\u6765\u542f\u52a8 Nginx\uff0c<\/p>\n\n\n\n<p>\u542f\u52a8nginx<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$sudo \/usr\/local\/nginx\/sbin\/nginx\n    <em>#netstat -ano|grep 80<\/em>\n        tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      \u5173\u95ed <strong>(<\/strong>0.00\/0\/0<strong>)<\/strong>\n        unix  17     <strong>[<\/strong> <strong>]<\/strong>         \u6570\u636e\u62a5                10801    \/dev\/log\n<\/pre>\n\n\n\n<p>\u6253\u5f00\u6d4f\u89c8\u5668\u8bbf\u95ee\u6b64\u673a\u5668\u7684 IP\uff0c\u5982\u679c\u6d4f\u89c8\u5668\u51fa\u73b0 Welcome to nginx! \u5219\u8868\u793a Nginx \u5df2\u7ecf\u5b89\u88c5\u5e76\u8fd0\u884c\u6210\u529f<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">    <em># \u68c0\u67e5\u914d\u7f6e\u6587\u4ef6\u662f\u5426\u6b63\u786e<\/em>\n    <em># \/usr\/local\/sbin\/nginx -t <\/em>\n    <em># \u53ef\u4ee5\u770b\u5230\u7f16\u8bd1\u9009\u9879<\/em>\n    <em># \/usr\/local\/sbin\/nginx -V<\/em>\n    <em>#\u91cd\u542fNginx<\/em>\n    <em>#sudo \/usr\/local\/sbin\/nginx -s reload<\/em>\n    <em>#\u5173\u95edNginx<\/em>\n    <em>#sudo \/usr\/local\/sbin\/nginx -s stop<\/em>\n    <em>#\u4f18\u96c5\u505c\u6b62\u670d\u52a1<\/em>\n    <em>#sudo \/usr\/local\/sbin\/nginx -s quit<\/em>\n    <em>#kill -s SIGQUIT pid_master<\/em>\n    <em>#kill -s SIGWINCH pid_master<\/em>\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_2\">\u914d\u7f6e<\/h2>\n\n\n\n<p>nginx.conf\u914d\u7f6e\u6587\u4ef6,\u57fa\u672c\u5c31\u5206\u4e3a\u4ee5\u4e0b\u51e0\u5757\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">main\nevents   <strong>{<\/strong>\n  ....\n<strong>}<\/strong>\nhttp        <strong>{<\/strong>\n  ....\n  upstream myproject <strong>{<\/strong>\n    .....\n  <strong>}<\/strong>\n  server  <strong>{<\/strong>\n    ....\n    location <strong>{<\/strong>\n        ....\n    <strong>}<\/strong>\n  <strong>}<\/strong>\n  server  <strong>{<\/strong>\n    ....\n    location <strong>{<\/strong>\n        ....\n    <strong>}<\/strong>\n  <strong>}<\/strong>\n  ....\n<strong>}<\/strong>\n<\/pre>\n\n\n\n<p>nginx\u914d\u7f6e\u6587\u4ef6\u4e3b\u8981\u5206\u4e3a\u516d\u4e2a\u533a\u57df\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>main(\u5168\u5c40\u8bbe\u7f6e)<\/li><li>events(nginx\u5de5\u4f5c\u6a21\u5f0f)<\/li><li>http(http\u8bbe\u7f6e)<\/li><li>sever(\u4e3b\u673a\u8bbe\u7f6e)<\/li><li>location(URL\u5339\u914d)<\/li><li>upstream(\u8d1f\u8f7d\u5747\u8861\u670d\u52a1\u5668\u8bbe\u7f6e)<\/li><\/ul>\n\n\n\n<p>\u4e0b\u9762\u4f9d\u6b21\u6765\u770b\u4e0b\u5177\u4f53\u5185\u5bb9<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>main\u6a21\u5757<\/li><\/ul>\n\n\n\n<p>\u4e0b\u9762\u65f6\u4e00\u4e2amain\u533a\u57df\uff0c\u4ed6\u662f\u4e00\u4e2a\u5168\u5c40\u7684\u8bbe\u7f6e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">user nobody nobody;\nworker_processes 2;\nerror_log  \/usr\/local\/var\/log\/nginx\/error.log  notice;\npid        \/usr\/local\/var\/run\/nginx\/nginx.pid;\nworker_rlimit_nofile 1024;\n<\/pre>\n\n\n\n<p>user \u6765\u6307\u5b9aNginx Worker\u8fdb\u7a0b\u8fd0\u884c\u7528\u6237\u4ee5\u53ca\u7528\u6237\u7ec4\uff0c\u9ed8\u8ba4\u7531nobody\u8d26\u53f7\u8fd0\u884c\u3002<\/p>\n\n\n\n<p>worker_processes\u6765\u6307\u5b9a\u4e86Nginx\u8981\u5f00\u542f\u7684\u5b50\u8fdb\u7a0b\u6570\u3002\u6bcf\u4e2aNginx\u8fdb\u7a0b\u5e73\u5747\u8017\u8d3910M~12M\u5185\u5b58\u3002\u6839\u636e\u7ecf\u9a8c\uff0c\u4e00\u822c\u6307\u5b9a1\u4e2a\u8fdb\u7a0b\u5c31\u8db3\u591f\u4e86\uff0c\u5982\u679c\u662f\u591a\u6838CPU\uff0c\u5efa\u8bae\u6307\u5b9a\u548cCPU\u7684\u6570\u91cf\u4e00\u6837\u7684\u8fdb\u7a0b\u6570\u5373\u53ef\u3002\u6211\u8fd9\u91cc\u51992\uff0c\u90a3\u4e48\u5c31\u4f1a\u5f00\u542f2\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u603b\u51713\u4e2a\u8fdb\u7a0b\u3002<\/p>\n\n\n\n<p>error_log\u7528\u6765\u5b9a\u4e49\u5168\u5c40\u9519\u8bef\u65e5\u5fd7\u6587\u4ef6\u3002\u65e5\u5fd7\u8f93\u51fa\u7ea7\u522b\u6709debug\u3001info\u3001notice\u3001warn\u3001error\u3001crit\u53ef\u4f9b\u9009\u62e9\uff0c\u5176\u4e2d\uff0cdebug\u8f93\u51fa\u65e5\u5fd7\u6700\u4e3a\u6700\u8be6\u7ec6\uff0c\u800ccrit\u8f93\u51fa\u65e5\u5fd7\u6700\u5c11\u3002<\/p>\n\n\n\n<p>pid\u7528\u6765\u6307\u5b9a\u8fdb\u7a0bid\u7684\u5b58\u50a8\u6587\u4ef6\u4f4d\u7f6e\u3002<\/p>\n\n\n\n<p>worker_rlimit_nofile\u7528\u4e8e\u6307\u5b9a\u4e00\u4e2anginx\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u7684\u6700\u591a\u6587\u4ef6\u63cf\u8ff0\u7b26\u6570\u76ee\uff0c\u8fd9\u91cc\u662f65535\uff0c\u9700\u8981\u4f7f\u7528\u547d\u4ee4\u201culimit -n 65535\u201d\u6765\u8bbe\u7f6e\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>events \u6a21\u5757<\/li><\/ul>\n\n\n\n<p>events\u6a21\u5757\u6765\u7528\u6307\u5b9anginx\u7684\u5de5\u4f5c\u6a21\u5f0f\u548c\u5de5\u4f5c\u6a21\u5f0f\u53ca\u8fde\u63a5\u6570\u4e0a\u9650\uff0c\u4e00\u822c\u662f\u8fd9\u6837\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">events <strong>{<\/strong>\n    use epoll; <em>#Linux\u5e73\u53f0<\/em>\n    worker_connections  1024;\n<strong>}<\/strong>\n<\/pre>\n\n\n\n<p>use\u7528\u6765\u6307\u5b9aNginx\u7684\u5de5\u4f5c\u6a21\u5f0f\u3002Nginx\u652f\u6301\u7684\u5de5\u4f5c\u6a21\u5f0f\u6709select\u3001poll\u3001kqueue\u3001epoll\u3001rtsig\u548c\/dev\/poll\u3002\u5176\u4e2dselect\u548cpoll\u90fd\u662f\u6807\u51c6\u7684\u5de5\u4f5c\u6a21\u5f0f\uff0ckqueue\u548cepoll\u662f\u9ad8\u6548\u7684\u5de5\u4f5c\u6a21\u5f0f\uff0c\u4e0d\u540c\u7684\u662fepoll\u7528\u5728Linux\u5e73\u53f0\u4e0a\uff0c\u800ckqueue\u7528\u5728BSD\u7cfb\u7edf\u4e2d,\u5bf9\u4e8eLinux\u7cfb\u7edf\uff0cepoll\u5de5\u4f5c\u6a21\u5f0f\u662f\u9996\u9009\u3002<\/p>\n\n\n\n<p>worker_connections\u7528\u4e8e\u5b9a\u4e49Nginx\u6bcf\u4e2a\u8fdb\u7a0b\u7684\u6700\u5927\u8fde\u63a5\u6570\uff0c\u5373\u63a5\u6536\u524d\u7aef\u7684\u6700\u5927\u8bf7\u6c42\u6570\uff0c\u9ed8\u8ba4\u662f1024\u3002\u6700\u5927\u5ba2\u6237\u7aef\u8fde\u63a5\u6570\u7531worker_processes\u548cworker_connections\u51b3\u5b9a\uff0c\u5373Max_clients=worker_processes*worker_connections\uff0c\u5728\u4f5c\u4e3a\u53cd\u5411\u4ee3\u7406\u65f6\uff0cMax_clients\u53d8\u4e3a\uff1aMax_clients = worker_processes * worker_connections\/4\u3002 \u8fdb\u7a0b\u7684\u6700\u5927\u8fde\u63a5\u6570\u53d7Linux\u7cfb\u7edf\u8fdb\u7a0b\u7684\u6700\u5927\u6253\u5f00\u6587\u4ef6\u6570\u9650\u5236\uff0c\u5728\u6267\u884c\u64cd\u4f5c\u7cfb\u7edf\u547d\u4ee4\u201culimit -n 65536\u201d\u540eworker_connections\u7684\u8bbe\u7f6e\u624d\u80fd\u751f\u6548\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>http \u6a21\u5757<\/li><\/ul>\n\n\n\n<p>http\u6a21\u5757\u53ef\u4ee5\u8bf4\u662f\u6700\u6838\u5fc3\u7684\u6a21\u5757\u4e86\uff0c\u5b83\u8d1f\u8d23HTTP\u670d\u52a1\u5668\u76f8\u5173\u5c5e\u6027\u7684\u914d\u7f6e\uff0c\u5b83\u91cc\u9762\u7684server\u548cupstream\u5b50\u6a21\u5757\uff0c\u81f3\u5173\u91cd\u8981\uff0c\u7b49\u5230\u53cd\u5411\u4ee3\u7406\u548c\u8d1f\u8f7d\u5747\u8861\u4ee5\u53ca\u865a\u62df\u76ee\u5f55\u7b49\u4f1a\u4ed4\u7ec6\u8bf4\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">http<strong>{<\/strong>\n    include       mime.types;\n    default_type  application\/octet-stream;\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n    access_log  \/usr\/local\/var\/log\/nginx\/access.log  main;\n    sendfile        on;\n    tcp_nopush      on;\n    tcp_nodelay     on;\n    keepalive_timeout  10;\n    <em>#gzip  on;<\/em>\n    upstream myproject <strong>{<\/strong>\n        .....\n    <strong>}<\/strong>\n    server <strong>{<\/strong>\n        ....\n    <strong>}<\/strong>\n<strong>}<\/strong>\n<\/pre>\n\n\n\n<p>\u4e0b\u9762\u8be6\u7ec6\u4ecb\u7ecd\u4e0b\u8fd9\u6bb5\u4ee3\u7801\u4e2d\u6bcf\u4e2a\u914d\u7f6e\u9009\u9879\u7684\u542b\u4e49\u3002<\/p>\n\n\n\n<p>include \u6765\u7528\u8bbe\u5b9a\u6587\u4ef6\u7684mime\u7c7b\u578b,\u7c7b\u578b\u5728\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\u4e0b\u7684mime.type\u6587\u4ef6\u5b9a\u4e49\uff0c\u6765\u544a\u8bc9nginx\u6765\u8bc6\u522b\u6587\u4ef6\u7c7b\u578b\u3002<\/p>\n\n\n\n<p>default_type\u8bbe\u5b9a\u4e86\u9ed8\u8ba4\u7684\u7c7b\u578b\u4e3a\u4e8c\u8fdb\u5236\u6d41\uff0c\u4e5f\u5c31\u662f\u5f53\u6587\u4ef6\u7c7b\u578b\u672a\u5b9a\u4e49\u65f6\u4f7f\u7528\u8fd9\u79cd\u65b9\u5f0f\uff0c\u4f8b\u5982\u5728\u6ca1\u6709\u914d\u7f6easp \u7684locate \u73af\u5883\u65f6\uff0cNginx\u662f\u4e0d\u4e88\u89e3\u6790\u7684\uff0c\u6b64\u65f6\uff0c\u7528\u6d4f\u89c8\u5668\u8bbf\u95eeasp\u6587\u4ef6\u5c31\u4f1a\u51fa\u73b0\u4e0b\u8f7d\u4e86\u3002<\/p>\n\n\n\n<p>log_format\u7528\u4e8e\u8bbe\u7f6e\u65e5\u5fd7\u7684\u683c\u5f0f\uff0c\u548c\u8bb0\u5f55\u54ea\u4e9b\u53c2\u6570\uff0c\u8fd9\u91cc\u8bbe\u7f6e\u4e3amain\uff0c\u521a\u597d\u7528\u4e8eaccess_log\u6765\u7eaa\u5f55\u8fd9\u79cd\u7c7b\u578b\u3002<\/p>\n\n\n\n<p>main\u7684\u7c7b\u578b\u65e5\u5fd7\u5982\u4e0b\uff1a\u4e5f\u53ef\u4ee5\u589e\u5220\u90e8\u5206\u53c2\u6570\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">127.0.0.1 - - <strong>[<\/strong>21\/Apr\/2015:18:09:54 +0800<strong>]<\/strong> \"GET \/index.php HTTP\/1.1\" 200 87151 \"-\" \"Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/41.0.2272.76 Safari\/537.36\"\n<\/pre>\n\n\n\n<p>access_log<\/p>\n\n\n\n<p>\u7528\u6765\u7eaa\u5f55\u6bcf\u6b21\u7684\u8bbf\u95ee\u65e5\u5fd7\u7684\u6587\u4ef6\u5730\u5740\uff0c\u540e\u9762\u7684main\u662f\u65e5\u5fd7\u7684\u683c\u5f0f\u6837\u5f0f\uff0c\u5bf9\u5e94\u4e8elog_format\u7684main\u3002<\/p>\n\n\n\n<p>sendfile\u53c2\u6570\u7528\u4e8e\u5f00\u542f\u9ad8\u6548\u6587\u4ef6\u4f20\u8f93\u6a21\u5f0f\u3002\u5c06tcp_nopush\u548ctcp_nodelay\u4e24\u4e2a\u6307\u4ee4\u8bbe\u7f6e\u4e3aon\u7528\u4e8e\u9632\u6b62\u7f51\u7edc\u963b\u585e\u3002<\/p>\n\n\n\n<p>keepalive_timeout\u8bbe\u7f6e\u5ba2\u6237\u7aef\u8fde\u63a5\u4fdd\u6301\u6d3b\u52a8\u7684\u8d85\u65f6\u65f6\u95f4\u3002\u5728\u8d85\u8fc7\u8fd9\u4e2a\u65f6\u95f4\u4e4b\u540e\uff0c\u670d\u52a1\u5668\u4f1a\u5173\u95ed\u8be5\u8fde\u63a5\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>server \u6a21\u5757<\/li><\/ul>\n\n\n\n<p>sever \u6a21\u5757\u662fhttp\u7684\u5b50\u6a21\u5757\uff0c\u5b83\u7528\u6765\u5b9a\u4e00\u4e2a\u865a\u62df\u4e3b\u673a\uff0c\u6211\u4eec\u5148\u8bb2\u6700\u57fa\u672c\u7684\u914d\u7f6e\uff0c\u8fd9\u4e9b\u5728\u540e\u9762\u518d\u8bb2\u3002<\/p>\n\n\n\n<p>\u6211\u4eec\u770b\u4e00\u4e0b\u4e00\u4e2a\u7b80\u5355\u7684server \u662f\u5982\u4f55\u505a\u7684\uff1f<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">server <strong>{<\/strong>\n        listen       8080;\n        server_name  localhost 192.168.12.10 www.yangyi.com;\n        <em># \u5168\u5c40\u5b9a\u4e49\uff0c\u5982\u679c\u90fd\u662f\u8fd9\u4e00\u4e2a\u76ee\u5f55\uff0c\u8fd9\u6837\u5b9a\u4e49\u6700\u7b80\u5355\u3002<\/em>\n        root   \/Users\/yangyi\/www;\n        index  index.php index.html index.htm; \n        charset utf-8;\n        access_log  usr\/local\/var\/log\/host.access.log  main;\n        aerror_log  usr\/local\/var\/log\/host.error.log  error;\n        ....\n<strong>}<\/strong>\n<\/pre>\n\n\n\n<p>server\u6807\u5fd7\u5b9a\u4e49\u865a\u62df\u4e3b\u673a\u5f00\u59cb\u3002<\/p>\n\n\n\n<p>listen\u7528\u4e8e\u6307\u5b9a\u865a\u62df\u4e3b\u673a\u7684\u670d\u52a1\u7aef\u53e3\u3002<\/p>\n\n\n\n<p>server_name\u7528\u6765\u6307\u5b9aIP\u5730\u5740\u6216\u8005\u57df\u540d\uff0c\u591a\u4e2a\u57df\u540d\u4e4b\u95f4\u7528\u7a7a\u683c\u5206\u5f00\u3002<\/p>\n\n\n\n<p>root \u8868\u793a\u5728\u8fd9\u6574\u4e2aserver\u865a\u62df\u4e3b\u673a\u5185\uff0c\u5168\u90e8\u7684root web\u6839\u76ee\u5f55\u3002\u6ce8\u610f\u8981\u548clocate {}\u4e0b\u9762\u5b9a\u4e49\u7684\u533a\u5206\u5f00\u6765\u3002<\/p>\n\n\n\n<p>index \u5168\u5c40\u5b9a\u4e49\u8bbf\u95ee\u7684\u9ed8\u8ba4\u9996\u9875\u5730\u5740\u3002\u6ce8\u610f\u8981\u548clocate {}\u4e0b\u9762\u5b9a\u4e49\u7684\u533a\u5206\u5f00\u6765\u3002<\/p>\n\n\n\n<p>charset\u7528\u4e8e\u8bbe\u7f6e\u7f51\u9875\u7684\u9ed8\u8ba4\u7f16\u7801\u683c\u5f0f\u3002<\/p>\n\n\n\n<p>access_log\u7528\u6765\u6307\u5b9a\u6b64\u865a\u62df\u4e3b\u673a\u7684\u8bbf\u95ee\u65e5\u5fd7\u5b58\u653e\u8def\u5f84\uff0c\u6700\u540e\u7684main\u7528\u4e8e\u6307\u5b9a\u8bbf\u95ee\u65e5\u5fd7\u7684\u8f93\u51fa\u683c\u5f0f\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>location \u6a21\u5757<\/li><\/ul>\n\n\n\n<p>location\u6a21\u5757\u662fnginx\u4e2d\u7528\u7684\u6700\u591a\u7684\uff0c\u4e5f\u662f\u6700\u91cd\u8981\u7684\u6a21\u5757\u4e86\uff0c\u4ec0\u4e48\u8d1f\u8f7d\u5747\u8861\u554a\u3001\u53cd\u5411\u4ee3\u7406\u554a\u3001\u865a\u62df\u57df\u540d\u554a\u90fd\u4e0e\u5b83\u76f8\u5173\u3002\u6162\u6162\u6765\u8bb2\uff1a<\/p>\n\n\n\n<p>location \u6839\u636e\u5b83\u5b57\u9762\u610f\u601d\u5c31\u77e5\u9053\u662f\u6765\u5b9a\u4f4d\u7684\uff0c\u5b9a\u4f4dURL\uff0c\u89e3\u6790URL\uff0c\u6240\u4ee5\uff0c\u5b83\u4e5f\u63d0\u4f9b\u4e86\u5f3a\u5927\u7684\u6b63\u5219\u5339\u914d\u529f\u80fd\uff0c\u4e5f\u652f\u6301\u6761\u4ef6\u5224\u65ad\u5339\u914d\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7location\u6307\u4ee4\u5b9e\u73b0Nginx\u5bf9\u52a8\u3001\u9759\u6001\u7f51\u9875\u8fdb\u884c\u8fc7\u6ee4\u5904\u7406\u3002\u50cf\u6211\u4eec\u7684php\u73af\u5883\u642d\u5efa\u5c31\u662f\u7528\u5230\u4e86\u5b83\u3002<\/p>\n\n\n\n<p>\u6211\u4eec\u5148\u6765\u770b\u8fd9\u4e2a\uff0c\u8bbe\u5b9a\u9ed8\u8ba4\u9996\u9875\u548c\u865a\u62df\u673a\u76ee\u5f55\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">location \/ <strong>{<\/strong>\n            root   \/Users\/yangyi\/www;\n            index  index.php index.html index.htm;\n        <strong>}<\/strong>\n<\/pre>\n\n\n\n<p>location \/\u8868\u793a\u5339\u914d\u8bbf\u95ee\u6839\u76ee\u5f55\u3002<\/p>\n\n\n\n<p>root\u6307\u4ee4\u7528\u4e8e\u6307\u5b9a\u8bbf\u95ee\u6839\u76ee\u5f55\u65f6\uff0c\u865a\u62df\u4e3b\u673a\u7684web\u76ee\u5f55\uff0c\u8fd9\u4e2a\u76ee\u5f55\u53ef\u4ee5\u662f\u76f8\u5bf9\u8def\u5f84\uff08\u76f8\u5bf9\u8def\u5f84\u662f\u76f8\u5bf9\u4e8enginx\u7684\u5b89\u88c5\u76ee\u5f55\uff09\u3002\u4e5f\u53ef\u4ee5\u662f\u7edd\u5bf9\u8def\u5f84\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">  <em>#\u53cd\u5411\u4ee3\u7406\u914d\u7f6e<\/em>\n  location \/itcast\/ <strong>{<\/strong>\n             proxy_pass http:\/\/127.0.0.1:12345;\n             proxy_set_header X-real-ip $remote_addr;\n             proxy_set_header Host $http_host;\n         <strong>}<\/strong>\n\n\n  <em>#\u91c7\u7528uwsgi\u65b9\u5f0f<\/em>\n  location \/python\/ <strong>{<\/strong>\n             include uwsgi_params;\n             uwsgi_pass 127.0.0.1:33333;\n         <strong>}<\/strong>\n\n\n\n    <em>#\u8bbf\u95eenginx\u672c\u673a\u76ee\u5f55\u7684\u6587\u4ef6<\/em>\n    location \/ <strong>{<\/strong>\n            root   \/home\/itcast\/xwp\/itcast\/;\n            index  index.html index.htm;\n        <strong>}<\/strong>\n\n    location  \/static\/ <strong>{<\/strong>\n             alias \/var\/static\/;\n        <strong>}<\/strong>\n<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>upstram \u6a21\u5757<\/li><\/ul>\n\n\n\n<p>upstream \u6a21\u5757\u8d1f\u503a\u8d1f\u8f7d\u5747\u8861\u6a21\u5757\uff0c\u901a\u8fc7\u4e00\u4e2a\u7b80\u5355\u7684\u8c03\u5ea6\u7b97\u6cd5\u6765\u5b9e\u73b0\u5ba2\u6237\u7aefIP\u5230\u540e\u7aef\u670d\u52a1\u5668\u7684\u8d1f\u8f7d\u5747\u8861\u3002\u6211\u5148\u5b66\u4e60\u600e\u4e48\u7528\uff0c\u5177\u4f53\u7684\u4f7f\u7528\u5b9e\u4f8b\u4ee5\u540e\u518d\u8bf4\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">upstream test.com<strong>{<\/strong>\n    ip_hash;\n    server 192.168.123.1:80;\n    server 192.168.123.2:80 down;\n    server 192.168.123.3:8080  max_fails<strong>=<\/strong>3  fail_timeout<strong>=<\/strong>20s;\n    server 192.168.123.4:8080;\n<strong>}<\/strong>\n<\/pre>\n\n\n\n<p>\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u901a\u8fc7upstream\u6307\u4ee4\u6307\u5b9a\u4e86\u4e00\u4e2a\u8d1f\u8f7d\u5747\u8861\u5668\u7684\u540d\u79f0test.com\u3002\u8fd9\u4e2a\u540d\u79f0\u53ef\u4ee5\u4efb\u610f\u6307\u5b9a\uff0c\u5728\u540e\u9762\u9700\u8981\u7684\u5730\u65b9\u76f4\u63a5\u8c03\u7528\u5373\u53ef\u3002<\/p>\n\n\n\n<p>\u91cc\u9762\u662fip_hash\u8fd9\u662f\u5176\u4e2d\u7684\u4e00\u79cd\u8d1f\u8f7d\u5747\u8861\u8c03\u5ea6\u7b97\u6cd5\u3002<\/p>\n\n\n\n<p>Nginx\u7684\u8d1f\u8f7d\u5747\u8861\u6a21\u5757\u76ee\u524d\u652f\u63014\u79cd\u8c03\u5ea6\u7b97\u6cd5:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>weight \u8f6e\u8be2\uff08\u9ed8\u8ba4\uff09\u3002\u6bcf\u4e2a\u8bf7\u6c42\u6309\u65f6\u95f4\u987a\u5e8f\u9010\u4e00\u5206\u914d\u5230\u4e0d\u540c\u7684\u540e\u7aef\u670d\u52a1\u5668\uff0c\u5982\u679c\u540e\u7aef\u67d0\u53f0\u670d\u52a1\u5668\u5b95\u673a\uff0c\u6545\u969c\u7cfb\u7edf\u88ab\u81ea\u52a8\u5254\u9664\uff0c\u4f7f\u7528\u6237\u8bbf\u95ee\u4e0d\u53d7\u5f71\u54cd\u3002weight\u3002\u6307\u5b9a\u8f6e\u8be2\u6743\u503c\uff0cweight\u503c\u8d8a\u5927\uff0c\u5206\u914d\u5230\u7684\u8bbf\u95ee\u673a\u7387\u8d8a\u9ad8\uff0c\u4e3b\u8981\u7528\u4e8e\u540e\u7aef\u6bcf\u4e2a\u670d\u52a1\u5668\u6027\u80fd\u4e0d\u5747\u7684\u60c5\u51b5\u4e0b\u3002<\/li><li>ip_hash\u3002\u6bcf\u4e2a\u8bf7\u6c42\u6309\u8bbf\u95eeIP\u7684hash\u7ed3\u679c\u5206\u914d\uff0c\u8fd9\u6837\u6765\u81ea\u540c\u4e00\u4e2aIP\u7684\u8bbf\u5ba2\u56fa\u5b9a\u8bbf\u95ee\u4e00\u4e2a\u540e\u7aef\u670d\u52a1\u5668\uff0c\u6709\u6548\u89e3\u51b3\u4e86\u52a8\u6001\u7f51\u9875\u5b58\u5728\u7684session\u5171\u4eab\u95ee\u9898\u3002<\/li><li>fair\u3002\u6bd4\u4e0a\u9762\u4e24\u4e2a\u66f4\u52a0\u667a\u80fd\u7684\u8d1f\u8f7d\u5747\u8861\u7b97\u6cd5\u3002\u6b64\u79cd\u7b97\u6cd5\u53ef\u4ee5\u4f9d\u636e\u9875\u9762\u5927\u5c0f\u548c\u52a0\u8f7d\u65f6\u95f4\u957f\u77ed\u667a\u80fd\u5730\u8fdb\u884c\u8d1f\u8f7d\u5747\u8861\uff0c\u4e5f\u5c31\u662f\u6839\u636e\u540e\u7aef\u670d\u52a1\u5668\u7684\u54cd\u5e94\u65f6\u95f4\u6765\u5206\u914d\u8bf7\u6c42\uff0c\u54cd\u5e94\u65f6\u95f4\u77ed\u7684\u4f18\u5148\u5206\u914d\u3002Nginx\u672c\u8eab\u662f\u4e0d\u652f\u6301fair\u7684\uff0c\u5982\u679c\u9700\u8981\u4f7f\u7528\u8fd9\u79cd\u8c03\u5ea6\u7b97\u6cd5\uff0c\u5fc5\u987b\u4e0b\u8f7dNginx\u7684upstream_fair\u6a21\u5757\u3002<\/li><li>url_hash\u3002\u6309\u8bbf\u95eeurl\u7684hash\u7ed3\u679c\u6765\u5206\u914d\u8bf7\u6c42\uff0c\u4f7f\u6bcf\u4e2aurl\u5b9a\u5411\u5230\u540c\u4e00\u4e2a\u540e\u7aef\u670d\u52a1\u5668\uff0c\u53ef\u4ee5\u8fdb\u4e00\u6b65\u63d0\u9ad8\u540e\u7aef\u7f13\u5b58\u670d\u52a1\u5668\u7684\u6548\u7387\u3002Nginx\u672c\u8eab\u662f\u4e0d\u652f\u6301url_hash\u7684\uff0c\u5982\u679c\u9700\u8981\u4f7f\u7528\u8fd9\u79cd\u8c03\u5ea6\u7b97\u6cd5\uff0c\u5fc5\u987b\u5b89\u88c5Nginx \u7684hash\u8f6f\u4ef6\u5305\u3002<\/li><\/ul>\n\n\n\n<p>\u5728HTTP Upstream\u6a21\u5757\u4e2d\uff0c\u53ef\u4ee5\u901a\u8fc7server\u6307\u4ee4\u6307\u5b9a\u540e\u7aef\u670d\u52a1\u5668\u7684IP\u5730\u5740\u548c\u7aef\u53e3\uff0c\u540c\u65f6\u8fd8\u53ef\u4ee5\u8bbe\u5b9a\u6bcf\u4e2a\u540e\u7aef\u670d\u52a1\u5668\u5728\u8d1f\u8f7d\u5747\u8861\u8c03\u5ea6\u4e2d\u7684\u72b6\u6001\u3002\u5e38\u7528\u7684\u72b6\u6001\u6709\uff1a<\/p>\n\n\n\n<p>down\uff0c\u8868\u793a\u5f53\u524d\u7684server\u6682\u65f6\u4e0d\u53c2\u4e0e\u8d1f\u8f7d\u5747\u8861\u3002<\/p>\n\n\n\n<p>backup\uff0c\u9884\u7559\u7684\u5907\u4efd\u673a\u5668\u3002\u5f53\u5176\u4ed6\u6240\u6709\u7684\u975ebackup\u673a\u5668\u51fa\u73b0\u6545\u969c\u6216\u8005\u5fd9\u7684\u65f6\u5019\uff0c\u624d\u4f1a\u8bf7\u6c42backup\u673a\u5668\uff0c\u56e0\u6b64\u8fd9\u53f0\u673a\u5668\u7684\u538b\u529b\u6700\u8f7b\u3002<\/p>\n\n\n\n<p>max_fails\uff0c\u5141\u8bb8\u8bf7\u6c42\u5931\u8d25\u7684\u6b21\u6570\uff0c\u9ed8\u8ba4\u4e3a1\u3002\u5f53\u8d85\u8fc7\u6700\u5927\u6b21\u6570\u65f6\uff0c\u8fd4\u56deproxy_next_upstream \u6a21\u5757\u5b9a\u4e49\u7684\u9519\u8bef\u3002<\/p>\n\n\n\n<p>fail_timeout\uff0c\u5728\u7ecf\u5386\u4e86max_fails\u6b21\u5931\u8d25\u540e\uff0c\u6682\u505c\u670d\u52a1\u7684\u65f6\u95f4\u3002max_fails\u53ef\u4ee5\u548cfail_timeout\u4e00\u8d77\u4f7f\u7528\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f \u5f53\u8d1f\u8f7d\u8c03\u5ea6\u7b97\u6cd5\u4e3aip_hash\u65f6\uff0c\u540e\u7aef\u670d\u52a1\u5668\u5728\u8d1f\u8f7d\u5747\u8861\u8c03\u5ea6\u4e2d\u7684\u72b6\u6001\u4e0d\u80fd\u662fweight\u548cbackup\u3002<\/p>\n\n\n\n<p>\u5907\u6ce8\uff1a nginx\u7684worker_rlimit_nofile\u8fbe\u5230\u4e0a\u9650\u65f6\uff0c\u518d\u6709\u5ba2\u6237\u7aef\u94fe\u63a5\u62a5502\u9519\u8bef. \u7528\u4e86log_format\u6307\u4ee4\u8bbe\u7f6e\u4e86\u65e5\u5fd7\u683c\u5f0f\u4e4b\u540e\uff0c\u9700\u8981\u7528access_log\u6307\u4ee4\u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6\u7684\u5b58\u653e\u8def\u5f84.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_3\">\u53cd\u5411\u4ee3\u7406<\/h2>\n\n\n\n<p>\u6b63\u5411\u4ee3\u7406\uff0c\u4e5f\u5c31\u662f\u4f20\u8bf4\u4e2d\u7684\u4ee3\u7406,\u4ed6\u7684\u5de5\u4f5c\u539f\u7406\u5c31\u50cf\u4e00\u4e2a\u8df3\u677f\uff0c\u7b80\u5355\u7684\u8bf4\uff0c\u6211\u662f\u4e00\u4e2a\u7528\u6237\uff0c\u6211\u8bbf\u95ee\u4e0d\u4e86\u67d0\u7f51\u7ad9\uff0c\u4f46\u662f\u6211\u80fd\u8bbf\u95ee\u4e00\u4e2a\u4ee3\u7406\u670d\u52a1\u5668\uff0c\u8fd9\u4e2a\u4ee3\u7406\u670d\u52a1\u5668\u5462\uff0c\u4ed6\u80fd\u8bbf\u95ee\u90a3\u4e2a\u6211\u4e0d\u80fd\u8bbf\u95ee\u7684\u7f51\u7ad9\uff0c\u4e8e\u662f\u6211\u5148\u8fde\u4e0a\u4ee3\u7406\u670d\u52a1\u5668\uff0c\u544a\u8bc9\u4ed6\u6211\u9700\u8981\u90a3\u4e2a\u65e0\u6cd5\u8bbf\u95ee\u7f51\u7ad9\u7684\u5185\u5bb9\uff0c\u4ee3\u7406\u670d\u52a1\u5668\u53bb\u53d6\u56de\u6765\uff0c\u7136\u540e\u8fd4\u56de\u7ed9\u6211\u3002 \u4ece\u7f51\u7ad9\u7684\u89d2\u5ea6\uff0c\u53ea\u5728\u4ee3\u7406\u670d\u52a1\u5668\u6765\u53d6\u5185\u5bb9\u7684\u65f6\u5019\u6709\u4e00\u6b21\u8bb0\u5f55\uff0c\u6709\u65f6\u5019\u5e76\u4e0d\u77e5\u9053\u662f\u7528\u6237\u7684\u8bf7\u6c42\uff0c\u4e5f\u9690\u85cf\u4e86\u7528\u6237\u7684\u8d44\u6599\uff0c\u8fd9\u53d6\u51b3\u4e8e\u4ee3\u7406\u544a\u4e0d\u544a\u8bc9\u7f51\u7ad9\u3002\u7ed3\u8bba\u5c31\u662f\uff0c\u6b63\u5411\u4ee3\u7406 \u662f\u4e00\u4e2a\u4f4d\u4e8e\u5ba2\u6237\u7aef\u548c\u539f\u59cb\u670d\u52a1\u5668(origin server)\u4e4b\u95f4\u7684\u670d\u52a1\u5668\uff0c\u4e3a\u4e86\u4ece\u539f\u59cb\u670d\u52a1\u5668\u53d6\u5f97\u5185\u5bb9\uff0c\u5ba2\u6237\u7aef\u5411\u4ee3\u7406\u53d1\u9001\u4e00\u4e2a\u8bf7\u6c42\u5e76\u6307\u5b9a\u76ee\u6807(\u539f\u59cb\u670d\u52a1\u5668)\uff0c\u7136\u540e\u4ee3\u7406\u5411\u539f\u59cb\u670d\u52a1\u5668\u8f6c\u4ea4\u8bf7\u6c42\u5e76\u5c06\u83b7\u5f97\u7684\u5185\u5bb9\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u3002\u5ba2\u6237\u7aef\u5fc5\u987b\u8981\u8fdb\u884c\u4e00\u4e9b\u7279\u522b\u7684\u8bbe\u7f6e\u624d\u80fd\u4f7f\u7528\u6b63\u5411\u4ee3\u7406\u3002<\/p>\n\n\n\n<p>\u53cd\u5411\u4ee3\u7406\uff08Reverse Proxy\uff09\u65b9\u5f0f\u662f\u6307\u4ee5\u4ee3\u7406\u670d\u52a1\u5668\u6765\u63a5\u53d7internet\u4e0a\u7684\u8fde\u63a5\u8bf7\u6c42\uff0c\u7136\u540e\u5c06\u8bf7\u6c42\u8f6c\u53d1\u7ed9\u5185\u90e8\u7f51\u7edc\u4e0a\u7684\u670d\u52a1\u5668\uff0c\u5e76\u5c06\u4ece\u670d\u52a1\u5668\u4e0a\u5f97\u5230\u7684\u7ed3\u679c\u8fd4\u56de\u7ed9internet\u4e0a\u8bf7\u6c42\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\uff0c\u6b64\u65f6\u4ee3\u7406\u670d\u52a1\u5668\u5bf9\u5916\u5c31\u8868\u73b0\u4e3a\u4e00\u4e2a\u53cd\u5411\u4ee3\u7406\u670d\u52a1\u5668\u3002<\/p>\n\n\n\n<p>\u4ece\u7528\u9014\u4e0a\u6765\u8bb2\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">   \u6b63\u5411\u4ee3\u7406\u7684\u5178\u578b\u7528\u9014\u662f\u4e3a\u5728\u9632\u706b\u5899\u5185\u7684\u5c40\u57df\u7f51\u5ba2\u6237\u7aef\u63d0\u4f9b\u8bbf\u95eeInternet\u7684\u9014\u5f84\u3002\n   \u6b63\u5411\u4ee3\u7406\u8fd8\u53ef\u4ee5\u4f7f\u7528\u7f13\u51b2\u7279\u6027\u51cf\u5c11\u7f51\u7edc\u4f7f\u7528\u7387\u3002\u53cd\u5411\u4ee3\u7406\u7684\u5178\u578b\u7528\u9014\u662f\u5c06\u9632\u706b\u5899\u540e\u9762\u7684\u670d\u52a1\u5668\u63d0\u4f9b\u7ed9Internet\u7528\u6237\u8bbf\u95ee\u3002\n   \u53cd\u5411\u4ee3\u7406\u8fd8\u53ef\u4ee5\u4e3a\u540e\u7aef\u7684\u591a\u53f0\u670d\u52a1\u5668\u63d0\u4f9b\u8d1f\u8f7d\u5e73\u8861\uff0c\u6216\u4e3a\u540e\u7aef\u8f83\u6162\u7684\u670d\u52a1\u5668\u63d0\u4f9b\u7f13\u51b2\u670d\u52a1\u3002\n   \u53e6\u5916\uff0c\u53cd\u5411\u4ee3\u7406\u8fd8\u53ef\u4ee5\u542f\u7528\u9ad8\u7ea7URL\u7b56\u7565\u548c\u7ba1\u7406\u6280\u672f\uff0c\u4ece\u800c\u4f7f\u5904\u4e8e\u4e0d\u540cweb\u670d\u52a1\u5668\u7cfb\u7edf\u7684web\u9875\u9762\u540c\u65f6\u5b58\u5728\u4e8e\u540c\u4e00\u4e2aURL\u7a7a\u95f4\u4e0b\u3002\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_4\">\u53cd\u5411\u4ee3\u7406\u670d\u52a1\u5668\u7684\u57fa\u672c\u914d\u7f6e<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>proxy_pass proxy_pass URL; \u914d\u7f6e\u5757 location if \u6b64\u914d\u7f6e\u5c06\u5f53\u524d\u8bf7\u6c42\u4ee3\u7406\u5230URL\u53c2\u6570\u6307\u5b9a\u7684\u670d\u52a1\u5668\u4e0a,URL\u53ef\u4ee5\u662f\u4e3b\u673a\u540d\u6216\u8005IP\u5730\u5740\u52a0PORT\u7684\u5f62\u5f0f proxy_pass http:\/\/localhost:8000; \u4e5f\u53ef\u4ee5\u7ed3\u5408\u8d1f\u8f7d\u5747\u8861\u5b9e\u7528&lt;\u8d1f\u8f7d\u5747\u8861\u4f1a\u8bf4\u660e\u8fd9\u79cd\u60c5\u51b5&gt; \u4e5f\u53ef\u4ee5\u5427HTTP\u8f6c\u6362\u6210HTTPS proxy_pass http:\/\/192.168.0.1; \u9ed8\u8ba4\u60c5\u51b5\u53cd\u5411\u4ee3\u7406\u4e0d\u8f6c\u53d1\u8bf7\u6c42\u4e2d\u7684Host\u5934\u90e8,\u5982\u679c\u9700\u5440\u8bbe\u7f6e\u6293\u53d1\u5934\u90e8 \u5219 proxy_set_header Host $host;<\/li><li>proxy_method proxy_method method_name; \u914d\u7f6e\u5757 http server location \u6b64\u914d\u7f6e\u9879\u8868\u793a\u8f6c\u53d1\u65f6\u7684\u534f\u8bae\u65b9\u6cd5\u540d: proxy_method POST; \u90a3\u4e48\u5ba2\u6237\u7aef\u53d1\u6765\u7684GET\u8bf7\u6c42\u5728\u8f6c\u53d1\u65f6\u65b9\u6cd5\u6539\u4e3aPOST;<\/li><li>proxy_hide_header proxy_hide_header header1; \u914d\u7f6e\u5757 http server location; Nginx\u4f1a\u5c06\u4e0a\u6e38\u670d\u52a1\u5668\u7684\u54cd\u5e94\u8f6c\u53d1\u7ed9\u5ba2\u6237\u7aef,\u4f46\u9ed8\u8ba4\u4e0d\u8f6c\u53d1HTTP\u5934\u90e8\u5b57\u6bb5(Date Server X-Pad X-Accel-* ) \u4f7f\u7528proxy_hide_header\u53ef\u4ee5\u6307\u5b9a\u4efb\u610f\u5934\u90e8\u4e0d\u80fd\u88ab\u8f6c\u53d1 proxy_hide_header Cache-Control; proxy_hide_header MicrosoftOfficeWebServer;<\/li><li>proxy_pass_header proxy_pass_header header1; \u914d\u7f6e\u5757 http server location \u529f\u80fd\u4e0e proxy_hide_header\u76f8\u53cd,\u662f\u8bbe\u7f6e\u54ea\u4e9b\u5934\u90e8\u5141\u8bb8\u8f6c\u53d1. proxy_pass_header X-Accel-Redirect;<\/li><li>proxy_pass_request_body proxy_pass_request_body off|on; \u9ed8\u8ba4 on \u914d\u7f6e\u5757 http server location; \u786e\u5b9a\u4e0a\u6e38\u670d\u52a1\u5668\u662f\u5426\u5411\u4e0a\u6e38\u670d\u52a1\u5668\u8f6c\u53d1HTTP\u5305\u4f53<\/li><li>proxy_pass_request_header proxy_pass_request_header on | off; \u9ed8\u8ba4on \u914d\u7f6e\u5757 http server location \u786e\u5b9a\u662f\u5426\u8f6c\u53d1HTTP\u5934\u90e8<\/li><li>proxy_redirect proxy_redirect [default | off |redirect |replacement] \u9ed8\u8ba4default \u914d\u7f6e\u5757 http server location \u5f53\u4e0a\u6e38\u670d\u52a1\u54cd\u5e94\u65f6\u91cd\u5b9a\u5411\u6216\u5237\u65b0(HTTP 301 302),proxy_redirect\u53ef\u4ee5\u91cd\u8bbeHTTP\u5934\u90e8\u7684location\u6216refresh\u5b57\u6bb5 proxy_redirect http:\/\/locahost:8000\/two\/ http:\/\/frontend\/one\/; \u4e0a\u6e38\u54cd\u5e94302,location\u662fURI\u662fhttp:\/\/locahost:8000\/two\/some\/uri\/ \u90a3\u662f\u5b9e\u9645\u8f6c\u53d1\u7ed9\u5ba2\u6237\u7aef\u7684\u662f http:\/\/frontend\/one\/some\/uri\/; \u53ef\u4ee5\u4f7f\u7528\u524d\u9762\u63d0\u5230\u7684ngx_http_core_module\u6a21\u5757\u63d0\u4f9b\u7684\u53d8\u91cf proxy_redirect http:\/\/locahost:8000\/two\/ http:\/\/$host:server_port\/; \u53ef\u4ee5\u7701\u7565replacement\u53c2\u6570\u7684\u4e3b\u673a\u540d\u90e8\u5206,\u8fd9\u65f6\u5019\u7528\u865a\u62df\u4e3b\u673a\u540d\u586b\u5145 proxy_redirect http:\/\/locahost:8000\/two\/ \/one\/; \u4f7f\u7528off\u53c2\u6570\u7684\u65f6\u5019,\u5c06\u4f7flocation\u548crefresh\u7684\u5b57\u6bb5\u7ef4\u6301\u4e0d\u53d8 proxy_redirect off; \u5982\u679c\u4f7f\u7528\u7684 proxy_redirect default; \u4e0b\u9762\u4e24\u79cd\u914d\u7f6e\u662f\u7b49\u6548\u7684 location \/{ proxy_pass http:\/\/upstream:port\/two\/; proxy_redirect default; } location \/{ proxy_pass http:\/\/upstream:port\/two\/; proxy_redirect http:\/\/upstream:port\/two\/ \/one\/; }<\/li><li>proxy_next_upstream proxy_next_upstream [error |timeout |invalid_header |http_500 |http_502~504 |http_404 | off] \u9ed8\u8ba4 proxy_next_upstream error timeout; \u914d\u7f6e\u5757 http server location \u6b64\u914d\u7f6e\u8868\u793a\u4e0a\u6e38\u4e00\u53f0\u670d\u52a1\u5668\u8f6c\u53d1\u8bf7\u6c42\u51fa\u73b0\u9519\u8bef\u65f6,\u7ee7\u7eed\u6362\u4e00\u5957\u670d\u52a1\u5668\u5904\u7406\u8fd9\u4e2a\u8bf7\u6c42 \u5176\u53c2\u6570\u7528\u6765\u8bf4\u660e\u5728\u90a3\u4e9b\u60c5\u51b5\u4e0b\u7ee7\u7eed\u9009\u62e9\u4e0b\u4e00\u53f0\u4e0a\u6e38\u670d\u52a1\u5668\u8f6c\u53d1\u8bf7\u6c42. error \u5411\u4e0a\u6e38\u53d1\u8d77\u8fde\u63a5 \u53d1\u9001\u8bf7\u6c42 \u8bfb\u53d6\u54cd\u5e94\u65f6\u51fa\u9519 timeout \u53d1\u9001\u8bf7\u6c42\u6216\u8bfb\u53d6\u54cd\u5e94\u65f6\u51fa\u9519 invalid_header \u4e0a\u6e38\u670d\u52a1\u5668\u53d1\u9001\u7684\u54cd\u5e94\u65f6\u4e0d\u5408\u6cd5 http_500 \u4e0a\u6e38\u54cd\u5e94500 http_502 \u4e0a\u6e38\u54cd\u5e94502 http_503 \u4e0a\u6e38\u54cd\u5e94503 http_504 \u4e0a\u6e38\u54cd\u5e94504 http_404 \u4e0a\u6e38\u54cd\u5e94404 off \u5173\u95edproxy_next_upstream\u529f\u80fd \u53ea\u8981\u4e00\u51fa\u9519\u5c31\u9009\u62e9\u53e6\u5916\u4e00\u53f0\u4e0a\u6e38\u518d\u6b21\u51fa\u53d1 Nginx\u53cd\u5411\u4ee3\u7406\u6a21\u5757\u4e2d\u8fd8\u63d0\u4f9b\u5f88\u591a\u914d\u7f6e,\u5982\u8bbe\u7f6e\u8fde\u63a5\u7684\u8d85\u65f6\u65f6\u95f4,\u4e34\u65f6\u6587\u4ef6\u5982\u4f55\u5b58\u50a8,\u5982\u4f55\u7f13\u5b58\u4e0a\u6e38\u670d\u52a1\u5668\u54cd\u5e94\u7b49\u529f\u80fd.<\/li><\/ol>\n\n\n\n<p>\u53ef\u4ee5\u901a\u8fc7\u9605\u8bfb ngx_http_proxy_module\u4e86\u89e3\u66f4\u591a\u8be6\u7ec6\u60c5\u51b5<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">            <em>#sudo vim \/usr\/local\/nginx\/conf\/nginx.conf <\/em>\n\n            server <strong>{<\/strong>\n                listen       80;\n                server_name  localhost;\n                location \/ <strong>{<\/strong>\n                <em>#\u4fdd\u8bc1\u4ee3\u7406\u673a\u5668\u80fd\u8bbf\u95ee\u5230 \u4e0b\u9762\u7684\u673a\u5668\u5e76\u88c5\u6709nginx  \u5728\u4e3b\u673a\u53f7\u4e3a100\u7684\u673a\u5668\u4e0a\u6709\u54cd\u5e94\u7f51\u9875<\/em>\n                proxy_pass http:\/\/192.168.1.100;\n                root   html;\n                index  index.html index.htm;\n                <strong>}<\/strong>\n            <strong>}<\/strong>\n            sudo \/usr\/local\/nginx\/sbin\/nginx -s reload\n<\/pre>\n\n\n\n<p>\u52a0\u4e00\u4e9b\u5224\u65ad\u6761\u4ef6 \u83b7\u53d6\u5230 \u5bf9\u65b9\u8bf7\u6c42\u7684\u4e3b\u673a \u9632\u6b62\u522b\u4eba\u4ee3\u7406\u5230\u81ea\u5df1\u7684\u4e3b\u673a\u4e0a<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"_5\">\u8d1f\u8f7d\u5747\u8861<\/h2>\n\n\n\n<p>\u8d1f\u8f7d\u5747\u8861\u662f\u7531\u591a\u53f0\u670d\u52a1\u5668\u4ee5\u5bf9\u79f0\u7684\u65b9\u5f0f\u7ec4\u6210\u4e00\u4e2a\u670d\u52a1\u5668\u96c6\u5408\uff0c\u6bcf\u53f0\u670d\u52a1\u5668\u90fd\u5177\u6709\u7b49\u4ef7\u7684\u5730\u4f4d\uff0c\u90fd\u53ef\u4ee5\u5355\u72ec\u5bf9\u5916\u63d0\u4f9b\u670d\u52a1\u800c\u65e0\u987b\u5176\u4ed6\u670d\u52a1\u5668\u7684\u8f85\u52a9\u3002\u901a\u8fc7\u67d0\u79cd\u8d1f\u8f7d\u5206\u62c5\u6280\u672f\uff0c\u5c06\u5916\u90e8\u53d1\u9001\u6765\u7684\u8bf7\u6c42\u6309\u7167\u4e8b\u5148\u8bbe\u5b9a\u5206\u914d\u7b97\u6cd5\u5206\u914d\u5230\u5bf9\u79f0\u7ed3\u6784\u4e2d\u7684\u67d0\u4e00\u53f0\u670d\u52a1\u5668\u4e0a\uff0c\u800c\u63a5\u6536\u5230\u8bf7\u6c42\u7684\u670d\u52a1\u5668\u72ec\u7acb\u5730\u56de\u5e94\u5ba2\u6237\u7684\u8bf7\u6c42\u3002<\/p>\n\n\n\n<p>\u5747\u8861\u8d1f\u8f7d\u80fd\u591f\u5e73\u5747\u5206\u914d\u5ba2\u6237\u8bf7\u6c42\u5230\u670d\u52a1\u5668\u5217\u9635\uff0c\u7c4d\u6b64\u63d0\u4f9b\u5feb\u901f\u83b7\u53d6\u91cd\u8981\u6570\u636e\uff0c\u89e3\u51b3\u5927\u91cf\u5e76\u53d1\u8bbf\u95ee\u670d\u52a1\u95ee\u9898\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>upstream\u5757upstream name {&#8230;} \u914d\u7f6e\u5757 http upstream\u5757\u5b9a\u4e49\u4e00\u4e2a\u4e0a\u6e38\u670d\u52a1\u5668\u7684\u96c6\u7fa4,\u4fbf\u4e8e\u53cd\u5411\u4ee3\u7406\u4e2d\u7684proxy_pass\u4f7f\u7528 upstream mynet{ server www.wopai1.com; server www.wopai2.com; server www.wopai3.com; } server { location \/{ proxy_pass http:\/\/mynet; } }<\/li><li>serverserver name [paramenters] \u914d\u7f6e\u5757upstream server\u914d\u7f6e\u9879\u6307\u5b9a\u4e86\u4e00\u53f0\u4e0a\u6e38\u670d\u52a1\u5668\u7684\u540d\u5b57,\u53ef\u4ee5\u662f\u57df\u540d IP\u5730\u5740\u7aef\u53e3 UNIX\u53e5\u67c4 weight= number;\u8bbe\u7f6e\u5411\u8fd9\u53f0\u670d\u52a1\u5668\u8f6c\u53d1\u7684\u6743\u91cd,\u9ed8\u8ba4\u4e3a1 max_fails=number;\u8be5\u9009\u9879\u57dffail_timeout\u914d\u5408\u4f7f\u7528 \u6307\u5728fail_timeout\u65f6\u95f4\u6bb5\u5185\u5982\u679c\u8f6c\u53d1\u4e0a\u6e38\u5931\u8d25\u8d85\u8fc7number\u6b21\u5c31\u8ba4\u4e3a\u5f53\u524d\u7684fail_timeout\u65f6\u95f4\u5185 \u8fd9\u53f0\u670d\u52a1\u5668\u4e0d\u53ef\u7528,max_fails\u9ed8\u8ba4\u4e3a1 \u5982\u679c\u8bbe\u7f6e\u4e3a0 \u8868\u793a\u4e0d\u68c0\u67e5\u5931\u8d25\u6b21\u6570 fail_timeout=time; fail_timeout\u8868\u793a\u8be5\u65f6\u95f4\u5185\u8f6c\u53d1\u591a\u5c11\u6b21\u5931\u8d25\u540e\u5c31\u8ba4\u4e3a\u4e0a\u6e38\u4e0d\u53ef\u7528.\u9ed8\u8ba410s down \u8868\u793a\u4e0a\u6e38\u670d\u52a1\u5668\u6c38\u4e45\u4e0b\u7ebf,\u53ea\u80fd\u5728ip_hash\u914d\u7f6e\u65f6\u624d\u6709\u6548 backup \u5728ip_hash\u914d\u7f6e\u65f6\u65e0\u6548.\u53ea\u6709\u6240\u6709\u975e\u5907\u4efd\u673a\u90fd\u5931\u8d25,\u624d\u5411\u4e0a\u6e38\u5907\u4efd\u670d\u52a1\u5668\u8f6c\u53d1\u8bf7\u6c42. upstream mynet{ server www.wopai1.com weight=5; server www.wopai2.com:8081 max_fails=3 fail_timeout=300s; server www.wopai2.com down; }<\/li><li>ip_hash\u914d\u7f6e\u5757 upstream \u5e0c\u671b\u6765\u81ea\u67d0\u4e00\u4e2a\u7528\u6237\u7684\u8bf7\u6c42\u59cb\u7ec8\u843d\u5728\u56fa\u5b9a\u7684\u4e00\u53f0\u670d\u52a1\u5668\u4e0a\u8fdb\u884c\u5904\u7406. \u6839\u636e\u5ba2\u6237\u7aef\u7684IP\u6563\u5217\u8ba1\u7b97\u51fa\u4e00\u4e2akey,\u5c06key\u6309\u7167upstream\u96c6\u7fa4\u4e2d\u7684\u4e0a\u6e38\u670d\u52a1\u5668\u8fdb\u884c\u53d6\u6a21,\u6c42\u5f97\u7684\u503c\u5bf9\u5e94\u7684\u4e3b\u673a\u63a5\u6536\u8f6c\u53d1\u8bf7\u6c42. ip_hash\u4e0d\u53ef\u4ee5\u4e0eweight\u540c\u65f6\u4f7f\u7528 \u5982\u679cupstream\u914d\u7f6e\u4e2d\u6709\u4e00\u53f0\u670d\u52a1\u5668\u6682\u65f6\u4e0d\u53ef\u7528,\u4e0d\u80fd\u76f4\u63a5\u5220\u9664\u8be5\u914d\u7f6e,\u800c\u5e94\u8be5\u4f7f\u7528down\u6807\u8bc6. upstream mynet{ ip_hash; server www.wowpai1.top; server www.wowpai2.top; server www.wowpai3.top down; }<\/li><\/ol>\n\n\n\n<p>\u4f8b\u5b50,\u670d\u52a1\u5668\u8d1f\u8f7d\u5747\u8861\u57fa\u672c\u914d\u7f6e,nginx\u4e2d\u53ef\u4ee5\u8fdb\u884c\u8d1f\u8f7d\u5747\u8861\u7684\u76f8\u5173\u8bbe\u7f6e:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">        upstream my.net<strong>{<\/strong>    <em>#my.net\u662f\u81ea\u5b9a\u4e49\u7684\u547d\u540d \u5728server\u7ed3\u6784\u4e2d\u5f15\u7528\u5373\u53ef<\/em>\n\n        <em>#\u4ee3\u7406\u670d\u52a1\u5668\u4e3a \u4e24\u53f0\u673a\u5668192.168.22.136 192.168.22.147\u505a\u8d1f\u8f7d\u5747\u8861\u64cd\u4f5c <\/em>\n        <em>#\u4e24\u53f0\u673a\u5668\u4e0a \u53ef\u4ee5\u8dd1apache\u8d1f\u8f7d\u529f\u80fd\u66f4\u4e3a\u5f3a\u5927\u7684\u7f51\u9875\u76f8\u5173\u4efb\u52a1<\/em>\n\n        <em>#max_fails \u8868\u793a\u5c1d\u8bd5\u51fa\u9519\u6700\u5927\u6b21\u6570 \u5373\u53ef\u8ba4\u4e3a\u8be5\u670d\u52a1\u5668 \u5728fail_timeout\u65f6\u95f4\u5185\u4e0d\u53ef\u7528<\/em>\n        <em># server servername:port   servername\u53ef\u4ee5\u5199\u4e3b\u673a\u540d \u6216\u8005\u70b9\u5206\u5f0fIP<\/em>\n        server 192.168.22.136:80 max_fails<strong>=<\/strong>1 fail_timeout<strong>=<\/strong>300s;\n        server 192.168.22.147:80 max_fails<strong>=<\/strong>1 fail_timeout<strong>=<\/strong>300s;  \n        <strong>}<\/strong>\n\n\n        server <strong>{<\/strong>\n        listen       80;\n        server_name  localhost; \n        location \/ <strong>{<\/strong>\n            <em>#upstream \u5757\u540d<\/em>\n            proxy_pass http:\/\/my.net;\n            root   html;\n            index  index.html index.htm;\n        <strong>}<\/strong>\n<\/pre>\n\n\n\n<p>\u52a8\u624b\u5f00\u59cb\u914d\u7f6e\u624d\u80fd\u6162\u6162\u4e0a\u624bnginx\u914d\u7f6e\u548c\u4f7f\u7528\u3002<\/p>\n\n\n\n<p>\u6dd8\u5b9d\u56e2\u961f\u51fa\u54c1\uff0c\u9ad8\u8d28\u91cf\u8bb2nginx\u7684\u7535\u5b50\u4e66<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">http:\/\/tengine.taobao.org\/book\/<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>nginx \u5b89\u88c5 \u4e0b\u8f7d\u5fc5\u8981\u7ec4\u4ef6 nginx\u4e0b\u8f7d\u5730\u5740http:\/\/nginx.org\/en\/download.h [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[62],"class_list":["post-891","post","type-post","status-publish","format-standard","hentry","category-jishu","tag-zongjie"],"_links":{"self":[{"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=\/wp\/v2\/posts\/891","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=891"}],"version-history":[{"count":1,"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=\/wp\/v2\/posts\/891\/revisions"}],"predecessor-version":[{"id":892,"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=\/wp\/v2\/posts\/891\/revisions\/892"}],"wp:attachment":[{"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tongyunli.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}