Nginx基于多端口、多域名配置
<p><strong>一、基于端口访问</strong></p><p>在网卡只有一个,或者服务器资源有限的情况下有多个网站,就可以基于端口,或者基于域名来实现资源的访问。基于端口访问就是配置多个不同的端口,将域名指向同一个ip不同的端口来实现。</p>
<p>nginx.conf配置文件如下</p>
<p>#user nobody;<br>worker_processes 8;</p>
<p>events {<br>worker_connections 1024;<br>}</p>
<p>http {<br>include mime.types;<br>default_type application/octet-stream;</p>
<p>sendfile on;</p>
<p>keepalive_timeout 65;</p>
<p>##指定不同端口访问配置server段第一个端口800</p>
<p><strong>server {</strong><br><strong>listen 800; #第一端口800</strong><br><strong>server_name localhost;</strong></p>
<p><strong>location / {</strong><br><strong>root /www/ctm/xcy-project/yun-app-lives; ##网站目录</strong></p>
<p> limit_rate 512k;<br> sendfile on;<br> autoindex on;# 开启目录文件列表<br> autoindex_exact_size off;# 显示出文件的确切大小<br> autoindex_localtime on;# 显示的文件时间为文件的服务器时间<br> charset utf-8,gbk;# 避免中文乱码</p>
<p><br><strong>try_files $uri $uri/ /;</strong><br><strong>index index.html index.htm;</strong></p>
<p><strong>}</strong><br><strong>error_page 500 502 503 504 /50x.html;</strong><br><strong>location = /50x.html {</strong><br><strong>root html;</strong><br><strong>}</strong></p>
<p><strong>}</strong></p>
<p>##指定不同端口访问配置server段第二个端口801</p>
<p><strong>server {</strong><br><strong>listen 801; #第二个端口801</strong><br><strong>server_name localhost;</strong></p>
<p><br><strong>location / {</strong><br><strong>root /www/ctm/xcy-project/yun-app; #项目路径</strong><br><strong>try_files $uri $uri/ /;</strong><br><strong>index index.html index.htm;</strong></p>
<p><strong> }</strong></p>
<p><strong>error_page 500 502 503 504 /50x.html;</strong><br><strong>location = /50x.html {</strong></p>
<p><strong> }</strong><br><strong> }</strong></p>
<p>}</p>
<p>保存重启</p>
<p><strong>测试访问800端口</strong></p>
<p>ip:800</p>
<p><img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217154947002-683685712.png"></p>
<p> </p>
<p>测试访问801端口</p>
<p>ip:801</p>
<p><img alt="" loading="lazy" src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217155414806-2062855036.png"></p>
<p> </p>
<p>以上就是基于同ip不同端口访问,域名指定相应ip及端口就好。</p>
<p><strong>二、基于不同域名访问</strong></p>
<p>一般都是在nginx.conf的尾部加入include,使用vhost这样每个网页用单独的配置。</p>
<p>nginx.cnof最尾部的括号内添加如下</p>
<p>include vhost/*.conf;</p>
<p><img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217160403589-1692394395.png"></p>
<p> </p>
<p>配置文件的同级目录创建一个vhost文件夹</p>
<p><img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217160527242-954283652.png"></p>
<p>进入vhost目录下创建两个文件,实现不同域名访问。文件名的最后要以.conf结尾。</p>
<p><img alt="" loading="lazy" src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217164407534-349692899.png"></p>
<p> </p>
<p><strong>www.server111.com的配置文件如下</strong></p>
<p>##网站域名 www.server111.com<br>server {<br>listen 80;<br>server_name www.server111.com; ##指定域名</p>
<p><br>location / {<br>root /www/ctm/xcy-project/yun-app-lives; ##项目路径<br>try_files $uri $uri/ /;<br>index index.html index.htm;</p>
<p>}</p>
<p>error_page 500 502 503 504 /50x.html;<br>location = /50x.html {</p>
<p>}<br>}</p>
<p> <img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217164516589-346738002.png"></p>
<p><strong>www.server222.com的配置文件如下</strong></p>
<p>其实只需要修改一下项目路径及域名即可。</p>
<p><strong><img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217164612476-1178739473.png"></strong></p>
<p>配置完成保存,然后重启nginx</p>
<p>因为我们域名是自己编写的,所以需要添加到本地的hosts文件,不然是无法访问的。</p>
<p>C:\Windows\System32\drivers\etc</p>
<p><img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217165902550-1074421046.png"></p>
<p> </p>
<p>添加你自己设置的域名+ip ,尾部添加。</p>
<p><img src="https://img2020.cnblogs.com/blog/1574107/202012/1574107-20201217170110973-568557318.png"></p>
<p> </p>
<p> 保存然后就可以测试访问</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>######################################################多站点多域名同一ip反向代理配置###########################################################</p>
<p> </p>
<p> </p>
<p>编辑nginx配置文件,vim /etc/nginx/nginx.conf</p>
<p>1、分别创建2个upstream,也就是后台真实服务器的pool,一个是news指向web服务器web服务器192.168.50.201,另外一个是sports,指向web服务器192.168.50.202;</p>
<p>2、分别创建2个server并监听80端口,其中一个设定servername为<span class="invisible">http://<span class="visible">news.aaa.com</span></span>,proxy_pass转发到news这个upstream,另外一个设定为<span class="invisible">http://<span class="visible">sports.aaa.com</span></span>,proxy_pass转发到sports这个upstream;</p>
<p>3、Nginx反向代理对外发布的是192.168.50.123这个IP;</p>
<div class="highlight">
<pre><code class="language-text">http {
upstream news{
ip_hash;
server 192.168.50.201:80;
}
upstream sports{
ip_hash;
server 192.168.50.202:80;
}
server {
listen 80;
server_name news.aaa.com ;
location / {
proxy_pass http://news;
proxy_set_header Host $http_host;
}
}
server {
listen 80;
server_name sports.aaa.com;
location / {
proxy_pass http://sports;
proxy_set_header Host $http_host;
}
}
}</code><br><br><br><br><br><br>##########################################################nginx多目录配置alias和root的区别###########################################################<br><br></pre>
<h1 class="postTitle">Nginx虚拟目录alias和root目录</h1>
<div class="clear"> </div>
<div class="postBody">
<div id="cnblogs_post_body" class="blogpost-body blogpost-body-html">
<p> </p>
<p>nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:<br>1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;<br>2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;<br>3)使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符号!!<br>4)alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/";<br> 但是如果location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!<br>5)root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。</p>
<p><br>举例说明(比如nginx配置的域名是www.wangshibo.com):<br>示例一<br>location /huan/ {<br> alias /home/www/huan/;<br>}</p>
<p>在上面alias虚拟目录配置下,访问http://www.wangshibo.com/huan/a.html实际指定的是/home/www/huan/a.html。<br>注意:alias指定的目录后面必须要加上"/",即/home/www/huan/不能改成/home/www/huan</p>
<p>上面的配置也可以改成root目录配置,如下,这样nginx就会去/home/www/huan下寻找http://www.wangshibo.com/huan的访问资源,两者配置后的访问效果是一样的!<br>location /huan/ {<br> root /home/www/;<br>}</p>
<p>示例二<br>上面的例子中alias设置的目录名和location匹配访问的path目录名一致,这样可以直接改成root目录配置;那要是不一致呢?<br>再看一例:<br>location /web/ {<br> alias /home/www/html/;<br>}</p>
<p>访问http://www.wangshibo.com/web的时候就会去/home/www/html/下寻找访问资源。<br>这样的话,还不能直接改成root目录配置。<br>如果非要改成root目录配置,就只能在/home/www下将html->web(做软连接,即快捷方式),如下:<br>location /web/ {<br> root /home/www/;<br>}</p>
<p># ln -s /home/www/web /home/www/html //即保持/home/www/web和/home/www/html内容一直</p>
<p>所以,一般情况下,在nginx配置中的良好习惯是:<br>1)在location /中配置root目录;<br>2)在location /path中配置alias虚拟目录。</p>
<p>如下一例:<br>server {<br> listen 80;<br> server_name www.wangshibo.com;<br> index index.html index.php index.htm;<br> access_log /usr/local/nginx/logs/image.log;</p>
<p> location / {<br> root /var/www/html;<br> }</p>
<p> location /haha { //匹配的path目录haha不需要真实存在alias指定的目录中<br> alias /var/www/html/ops/; //后面的"/"符号一定要带上<br> rewrite ^/opp/hen.php(.*)$ /opp/hen.php?s=$1 last;<br> # rewrite ^/opp/(.*)$ /opp/hen.php?s=$1 last;<br> }</p>
<p> location /wang { //匹配的path目录wang一定要真实存在root指定的目录中(就/var/www/html下一定要有wang目录存在)<br> root /var/www/html;<br> }</p>
<p> }</p>
<p>=============================再看下面一例=============================</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_220974" class="syntaxhighlighterbash">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
<div class="line number12 index11 alt1">12</div>
<div class="line number13 index12 alt2">13</div>
<div class="line number14 index13 alt1">14</div>
<div class="line number15 index14 alt2">15</div>
<div class="line number16 index15 alt1">16</div>
<div class="line number17 index16 alt2">17</div>
<div class="line number18 index17 alt1">18</div>
<div class="line number19 index18 alt2">19</div>
<div class="line number20 index19 alt1">20</div>
<div class="line number21 index20 alt2">21</div>
<div class="line number22 index21 alt1">22</div>
<div class="line number23 index22 alt2">23</div>
<div class="line number24 index23 alt1">24</div>
<div class="line number25 index24 alt2">25</div>
<div class="line number26 index25 alt1">26</div>
<div class="line number27 index26 alt2">27</div>
<div class="line number28 index27 alt1">28</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="bash plain"></code><code class="bash comments"># cat www.kevin.com.conf</code></div>
<div class="line number2 index1 alt1"><code class="bash plain">server {</code></div>
<div class="line number3 index2 alt2"><code class="bash spaces"> </code><code class="bash plain">listen 80;</code></div>
<div class="line number4 index3 alt1"><code class="bash spaces"> </code><code class="bash plain">server_name www.kevin.com;</code></div>
<div class="line number5 index4 alt2"><code class="bash spaces"> </code> </div>
<div class="line number6 index5 alt1"><code class="bash spaces"> </code><code class="bash plain">access_log </code><code class="bash plain">/data/nginx/logs/www</code><code class="bash plain">.kevin.com-access.log main;</code></div>
<div class="line number7 index6 alt2"><code class="bash spaces"> </code><code class="bash plain">error_log </code><code class="bash plain">/data/nginx/logs/www</code><code class="bash plain">.kevin.com-error.log;</code></div>
<div class="line number8 index7 alt1"><code class="bash spaces"> </code> </div>
<div class="line number9 index8 alt2"><code class="bash spaces"> </code><code class="bash plain">location / {</code></div>
<div class="line number10 index9 alt1"><code class="bash spaces"> </code><code class="bash plain">root </code><code class="bash plain">/data/web/kevin</code><code class="bash plain">;</code></div>
<div class="line number11 index10 alt2"><code class="bash spaces"> </code><code class="bash plain">index index.php index.html index.htm;</code></div>
<div class="line number12 index11 alt1"><code class="bash spaces"> </code><code class="bash plain">}</code></div>
<div class="line number13 index12 alt2"> </div>
<div class="line number14 index13 alt1"><code class="bash spaces"> </code><code class="bash plain">location </code><code class="bash plain">/document/</code> <code class="bash plain">{</code></div>
<div class="line number15 index14 alt2"><code class="bash spaces"> </code><code class="bash functions">alias</code> <code class="bash plain">/data/web/document/</code><code class="bash plain">;</code></div>
<div class="line number16 index15 alt1"><code class="bash plain">}</code></div>
<div class="line number17 index16 alt2"> </div>
<div class="line number18 index17 alt1"><code class="bash spaces"> </code><code class="bash plain">}</code></div>
<div class="line number19 index18 alt2"> </div>
<div class="line number20 index19 alt1"> </div>
<div class="line number21 index20 alt2"><code class="bash plain"></code><code class="bash comments"># ll /data/web/</code></div>
<div class="line number22 index21 alt1"><code class="bash plain">total 4</code></div>
<div class="line number23 index22 alt2"><code class="bash plain">drwxrwxr-x 2 app app 33 Nov 22 10:22 document</code></div>
<div class="line number24 index23 alt1"><code class="bash plain">drwxrwxr-x 4 app app 173 Sep 23 15:00 kevin</code></div>
<div class="line number25 index24 alt2"> </div>
<div class="line number26 index25 alt1"><code class="bash plain">如上配置后,则:</code></div>
<div class="line number27 index26 alt2"><code class="bash plain">访问http:</code><code class="bash plain">//www</code><code class="bash plain">.kevin.com</code><code class="bash plain">/admin</code> <code class="bash plain">就会找到</code><code class="bash plain">/data/web/kevin/admin</code><code class="bash plain">目录</code></div>
<div class="line number28 index27 alt1"><code class="bash plain">访问http:</code><code class="bash plain">//www</code><code class="bash plain">.kevin.com</code><code class="bash plain">/document</code> <code class="bash plain">就会找到</code><code class="bash plain">/data/web/document</code> <code class="bash plain">目录 (里面是一些静态资源)</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<pre><br><br><br><br><br><br><br><br><br><br><br><br><br><br>###############################宝塔模板##################3<br><br></pre>
<p>server<br>{<br> listen 43000;<br> server_name yhgj.com;<br> index index.php index.html index.htm default.php default.htm default.html;<br> root /www/server/stop/public;<br> <br> #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则<br> #error_page 404/404.html;<br> #SSL-END<br> <br> #ERROR-PAGE-START错误页配置,可以注释、删除或修改<br> #error_page 404 /404.html;<br> #error_page 502 /502.html;<br> #ERROR-PAGE-END<br> <br> #PHP-INFO-STARTPHP引用配置,可以注释或修改<br> #include enable-php-72.conf;<br> #PHP-INFO-END<br> <br> #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效<br> #include /www/server/panel/vhost/rewrite/yhgj.com.conf;<br> #REWRITE-END<br> <br> #禁止访问的文件或目录<br> location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)<br> {<br> return 404;<br> }<br> <br> #一键申请SSL证书验证目录相关设置<br> location ~ \.well-known{<br> allow all;<br> }<br> <br> location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$<br> {<br> expires 30d;<br> error_log /dev/null;<br> access_log off;<br> }<br> <br> location ~ .*\.(js|css)?$<br> {<br> expires 12h;<br> error_log /dev/null;<br> access_log off; <br> }<br> access_log/www/wwwlogs/yhgj.com.log;<br> error_log/www/wwwlogs/yhgj.com.error.log;<br>}</p>
</div><br><br>
来源:https://www.cnblogs.com/yanzi2020/p/14744504.html
頁:
[1]