gulimall——Nginx搭建域名访问环境及动静分离实现(五)

一、正向代理与反向代理

1.1正向代理

正向代理就是一个位于客户端和目标服务器之间的代理服务器,为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标(目标服务器),然后代理服务器向目标服务器发送请求并将获得的内容返回给客户端。

此时的代理服务器是由用户自主设置的,客户端请求都被代理服务器的请求给替代,因此正向代理能够隐藏客户端的信息。

1.2 反向代理

反向代理方式是指代理服务器接受连接请求,然后将请求发送给内网服务器,并将从内网服务器收到的结果返回给客户端。

反向代理服务器也位于客户端和目标服务器之间,但是此时的代理服务器是由目标服务器设置的,因此对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问代理服务器就可以获得目标服务器的资源。此时用户也不需要知道目标服务器的地址。

反向代理服务器可以用来屏蔽内网服务器信息,负载均衡等等。

二、配置系统Host文件

我们知道在网络上访问网站,要首先通过DNS服务器把要访问的网络域名(XXXX.com)解析成XXX.XXX.XXX.XXX的IP地址后,计算机才能对这个网络域名作访问。

要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,因为DNS做域名解析和返回IP都需要时间。

为了提高对经常访问的网络域名的解析效率,可以通过利用Hosts文件中建立域名和IP的映射关系来达到目的。根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个网络域名映射关系。如果有则,调用这个IP地址映射,如果没有,再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。

因此在开发过程中,我们可以在Hosts文件中配置好域名与对应的虚拟机ip地址,方便我们开发过程中访问。

三、Nginx相关配置

Nginx配置文件结构

cat /mydata/nginx/conf/nginx.conf  

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

可以看到,在 http 块中最后有 include /etc/nginx/conf.d/*.conf; 这句配置说明在 conf.d 目录下所有 .conf 后缀的文件内容都会作为 nginx 配置文件 http 块中的配置。这是为了防止主配置文件太复杂,也可以对不同的配置进行分类。

下面我们参考 conf.d 目录下的配置,来配置 gulimall 的 server 块配置。

gulimall.conf配置代理

server {
    listen       80;
    server_name  gulimall.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
      proxy_pass http://192.168.56.1:10000; //自己本机的ip地址
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

所以我们配置当访问 nginx请求时代理 192.168.56.1:10000转到商品服务首页,不过分布式情况下,商城系统可能有很多个,因此每次都得修改配置。因此改为将请求转发给网关,由网关转发给相应的服务。

反向代理:nginx 代理网关由网关进行转发

1. 修改 nginx.conf

vim /mydata/nginx/conf/nginx.conf

修改 http 块,配置上游服务器为网关地址,并取名gulimall


user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    upstream gulimall {  //此处定义gulimall上游服务器
        server 192.168.56.1:88;
    }
    include /etc/nginx/conf.d/*.conf;
}

2. 修改 gulimall.conf

配置代理地址为上面配置的上游服务器名gulimall

server {
    listen       80;
    server_name  gulimall.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / { 
      proxy_set_header Host $host; //防止丢失host请求信息
      proxy_pass http://gulimall;  //路由给gulimall上游服务器
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3、修改网关路由配置

        #将主机地址为order.gulimall.com转发至gulimall-order
        - id: gulimall_order_host
          uri: lb://gulimall-order
          predicates:
            - Host=order.gulimall.com

        #将主机地址为seckill.gulimall.com转发至gulimall-seckill
        - id: gulimall_seckill_host
          uri: lb://gulimall-seckill
          predicates:
            - Host=seckill.gulimall.com

        #将主机地址为**.gulimall.com转发至gulimall-product
        - id: gulimall_host
          uri: lb://gulimall-product
          predicates:
            - Host=**.gulimall.com  #这个放最后是为了让上面精确的路由规则先起作用
     

但此时访问API接口时能够成功

 但是访问gulimall.com会出现

原因是Host主机地址没有匹配上,因为Nginx代理给网关的时候,会丢失host信息,因此通过设置proxy_set_header Host $host; 保留host信息。

至此,就达到如下效果了。

四、Nginx动静分离实现

1、什么是动静分离

Nginx动静分离简单来说就是把动态请求和静态请求分离,Nginx处理静态请求,Tomcat处理动态请求。

将css、js、jpg等静态资源存储于Nginx服务器,收到静态资源请求直接从Nginx返回,这样能够减轻Tomcat服务器压力,同时提升网页的响应速度。

所有项目的静态资源都放在Nginx。

规则:/static/**这类请求都有Nginx直接返回

 2、具体实现步骤

(1)静态资源转移

 将原idea的静态资源static文件夹,全部移到服务器的/mydata/nginx/html/目录下

(2)修改index.html的资源请求路径

统一在请求前加上/static/

(3)修改Nginx配置

vim /mydata/nginx/conf/conf.d/gulimall.conf在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过域名访问Nginx服务器,你需要进行以下步骤: 1. 配置DNS解析:在你的域名注册商或DNS管理面板上,将域名解析到你的Nginx服务器的IP地址。这可以通过添加A记录或CNAME记录来完成。 2. 安装Nginx:确保在你的服务器上已经安装了Nginx。如果没有安装,可以使用适合你操作系统的包管理工具(如apt、yum等)进行安装。 3. 配置Nginx虚拟主机:编辑Nginx配置文件(通常是`/etc/nginx/nginx.conf`或`/etc/nginx/conf.d/default.conf`),添加一个新的虚拟主机配置块。在这个配置块中,指定你要绑定的域名和要使用的端口。 例如,假设你要绑定的域名是`example.com`,你可以在配置文件中添加以下内容: ``` server { listen 80; server_name example.com; location / { // 配置请求的处理方式 } } ``` 这个配置将监听80端口,并将所有来自`example.com`的请求转发到指定的处理方式。 4. 重启Nginx:保存配置文件后,使用命令重启Nginx服务,以使新的配置生效。命令可能是`systemctl restart nginx`或`service nginx restart`,具体命令取决于你的操作系统和Nginx安装方式。 5. 测试访问:现在你应该能够通过域名访问Nginx服务器了。打开浏览器,输入你配置的域名(例如`http://example.com`)并访问,应该可以看到Nginx服务器返回的内容。 请注意,这只是一个基本的配置示例,你可能需要根据你的实际需求进行更复杂的配置,例如添加SSL证书、配置反向代理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值