ng配置前后端同一个地址

其实讲到nginx服务,很多人都是一件很头疼的事情,其实他很简单的

第一:我们先来讲述一下nginx的安装和部署

第二:我们讲一下nginx的方向代理,端口映射配置对应的域名地址

第三:我们讲一个前后端如何共用一个域名地址,不然前端要配置一个域名,服务端也要配置一个域名,实属没必要

 

第一步:nginx的安装和部署

(1)其实我们做IT的都喜欢去官网下载资源和安装包,所以这里贴上nginx官网的地址

然后选择你们要的安装文件,把下载地址复制出来,我这边讲解是1.12.0的安装,其实什么版本都一样,下载地址可以这么获取哦

 

 

 

(2)使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装,这边我的服务器用的是centos。

wget -c https://nginx.org/download/nginx-1.20.2.tar.gz

(3)解压

tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0

(4)配置

其实在 nginx-1.12.0 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。
1.使用默认配置
./configure
2.自定义配置(不推荐)
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

(5)编译安装

make
make install

然后想要查询安装路径我们可以通过命令where nginx,服务器就会告诉你nginx在哪里啦

(6)关于nginx的一些命令,这些是我们比较常用的
cd /usr/local/nginx/sbin/
./nginx                          #这个是运行nginx
./nginx -s stop               #停止nginx服务
./nginx -s reload            #重载nginx,如果你改了nginx的配置文件

(7)一般我们都会配置开机自启动,不然每次服务器挂起,我们重要去启动它,很多东西都可以在这个文件设置开机自启动哦

即在rc.local增加启动代码就可以了。
vi /etc/rc.local
增加一行 /usr/local/nginx/sbin/nginx
设置执行权限:
chmod 755 rc.local

 

到这里,nginx就安装完毕了,启动、停止、重启操作也都完成了,当然,你也可以添加为系统服务,我这里就不在演示了。
 
第二步:nginx的反向代理
 
(1)我们安装nginx,其实就是为了配置域名,因为大家也不想自己的公网地址暴露在地址栏上,我们讲一个简单的配置,我们在nginx.conf文件大括号前一行加入include vhost/*.conf;,在配置目录同文件下创建vhost文件夹,把我们相关的nginx域名配置放进这个文件夹

 

 

cd /usr/local/nginx/conf
mkdir vhost
#比如要配置2个域名,一个是前端的,一个是服务端的 http://www.xxxweb.com  http://www.xxxserver.com
 touch www.xxxweb.com.conf #前端
touch www.xxxserver.com.conf #服务端

 

前端地址多数为打包部署方式,所以我们配置要指向包地址
server {
    listen 80;  #端口
    server_name www.xxx.com;   #域名
    access_log  www.xxx.com:80.access.log;  #响应日志文件
    client_max_body_size 20m;#上传限制大小
    #自定义错误页
    error_page 403 /403.html;
    error_page 404 /404.html;
    error_page 502 /502.html;

        root /data/rcweb/dist;   #打包位置
        index index.html index.htm;    
    
        location / {
          try_files $uri $uri/ /index.html last;
        }

}

后端以端口,通过80端口反向代理到某个映射服务端口,在进行配置域名,如下

server {
    listen 80;  #端口
    server_name www.xxx.com;   #域名
    access_log  www.xxx.com:80.access.log;  #响应日志文件
    client_max_body_size 20m;#上传限制大小
    #自定义错误页
    error_page 403 /403.html;
    error_page 404 /404.html;
    error_page 502 /502.html;
        
        
        #proxy_connect_timeout 400s;
        #proxy_send_timeout 400s;
        #proxy_read_timeout 400s;    

        location / {
        proxy_pass http://127.0.0.1:8003;  #监听的端口
        proxy_connect_timeout 3600s;
        proxy_send_timeout 3600s;
        proxy_read_timeout 3600s;

        }
}

 

然后执行命令,就可以重载nginx啦,当然啦你们比如用的是阿里云的服务,要把这个域名解析一下,安全组开放对应的端口,才可以使用,其他云服务也是一样,这个操作算常识,这里不算介绍了
/usr/local/nginx/sbin/nginx -s reload

 

以上是比较简单的nginx服务就配置好了,像python配置flask的时候一般会配合uwsgi使用,有http和socket两种,这个自行研究,不展开啦

 

第三步:前后端使用同一个域名地址(顺便讲一下https的配置,第二步讲的是http)

比如前端地址是https://www.xxx.com 服务端也可以是https://www.xxx.com,https和http就差证书,所以我们的证书下载之后也是放在vhost的同级目录,建立一个cert的文件夹,把证书上传,然后接下来我们来搞事情

具体配置如下 前端可以配置https head里面配置
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

配置baseurl的时候直接配置https://www.xxx.com/api,nginx可以这么配置如下,前后端都会自动带上https

server {
    listen 443 ssl;
    server_name www.xxx.com;
    ssl_certificate /usr/local/nginx/conf/cert/www.xxx.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/cert/www.xxx.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_prefer_server_ciphers on;
    #ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    index index.html index.htm;
    root  /data/dataanah5/dist; #前端打包路径
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html last;
   }
   
   location /api/ {
        proxy_pass http://ip:port;  #  服务端接口地址
    
        }


}

然后这里就是要重载一个nginx,就可以访问这个地址啦

/usr/local/nginx/sbin/nginx -s reload

 

 共勉,其实nginx的作用有很多,他除了反向代理,还有负载均衡,其实也是也有意思的。
 
 
 
 
 
 
 
 

 

posted @ 2022-11-24 10:21  WangHello  阅读(913)  评论(0编辑  收藏  举报