nginx 服务器的应用

一、Nginx提供的虚拟主机功能。(注意:配置文件修改后需要重新开启 nginx服务)

  虚拟主机可以让一台物理服务器当做多个服务器来使用,从而可以配置多个网站。Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。nginx 的虚拟主机就是通过 nginx.conf 中 server 节点指定的,一个 server 标签就是一个虚拟主机,想要设置多个虚拟主机,配置多个server节点即可。

1、通过端口区分不同的虚拟主机,访问主机地址+对应的端口号即可访问对应的页面。

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    server {
        listen       81;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-81;
            index  index.html index.htm;
        }
    }

 

2、通过域名区分虚拟主机,通过对应的 ip 地址即可访问对应的页面。

    server {
        listen       80;
        server_name  www.xxx1.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-taobao;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  www.xxx2.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-baidu;
            index  index.html index.htm;
        }
    }

 

二、反向代理。

1、在服务器上安装两个 tomcat,分别运行在 8080 和 8081 端口下。(需要修改 tomcat 默认端口号)

2、启动两个 tomcat 。

3、在 nginx.conf 中加入反向代理的配置。

upstream tomcat1 {
    server 192.168.37.131:8080;
    }
    server {
        listen       80;
        server_name  www.xxx1.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat1;
            index  index.html index.htm;
        }
    }

    upstream tomcat2 {
    server 192.168.25.148:8081;
    }
    server {
        listen       80;
        server_name  www.xxx2.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat2;
            index  index.html index.htm;
        }
    }

 

4、重新启动 nginx。

5、在主机中配置域名和ip的映射关系。

6、通过域名访问即可。

三、负载均衡。

   如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。

 upstream tomcat2 {
    server 192.168.37.131:8081;
    server 192.168.37.131:8082;
  }

  可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1。

 upstream tomcat2 {
    server 192.168.37.131:8081;
    server 192.168.37.131:8082 weight=2;
  }

 四、通过反向代理绕过网关。

    server {
        listen       80;
        server_name  api.sfwu.com;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   
      # 匹配到路径 /api/upload 时通过反向代理绕过网关 
        location /api/upload {
            # 直接跳转到主机名和端口号,不走网关
            proxy_pass http://10.200.0.232:8082;
            proxy_connect_timeout 600;
            proxy_read_timeout 600;
            rewrite "^/(.*)$" /zuul/$1 break;
        }

        location / {
                        proxy_pass http://10.200.0.232:10010;
                        proxy_connect_timeout 600;
                        proxy_read_timeout 600;
        }
    }

通过正则表达式重写路径,由于路径 /api/upload 中的 api 是多余的,需要重写路径将 api 去掉并得到正确的路径,否则报错!

正则表达式以 ^ 开头,$ 结尾(^ $)

^ /api/(.*)$ $/1   /api/代表匹配到/api/开头这种格式的路径  (.*)代表任意。

^ /api/(.*)$:匹配 /api/ 后面的所有路径。

$/1:取第一组,也就是重写的路径 /upload 即将 /api/upload 路径重写为 /upload

break:重写路径结束后,不在重新匹配路径。直接走 http://10.200.0.232:8082

 last:重新匹配路径。

posted @ 2023-01-05 16:39  炒股沦为首负  阅读(44)  评论(0编辑  收藏  举报