nginx配置

 使用vue脚手架打包的dist文件夹,尝试用nginx部署

参考资料(了解一点原理,配置起来会顺手些):

nginx中try_files $uri $uri/ /index.html的作用 $uri代表什么

nginx常用命令

Nginx 的 sites-available 和 sites-enbled 的区别

nginx前端配置、后端配置、前后端分离配置、https支持(ssl配置)、负载均衡配置、nginx location详解_前后端配置与nginx

如何在 Ubuntu 22.04 上安装、配置、使用 Nginx?

1.配置server

我们一般都是配置server项(被称作“虚拟主机”)

nginx启动时加载 /etc/nginx/nginx.conf 文件,作为配置。

而nginx.conf中有event{}和http{}两部分。

server项在http{}中,默认不是直接给出的。

而是通过加载外部的文件。

event{
        *************省略*************
}

http {

        ##
        # Basic Settings
        ##

        *************省略*************

        ##
        # SSL Settings
        ##

        *************省略*************

        ##
        # Logging Settings
        ##

        *************省略*************

        ##
        # Gzip Settings
        ##

        *************省略*************
        ##
        # Virtual Host Configs
        ##

          include /etc/nginx/conf.d/*.conf;
          include /etc/nginx/sites-enabled/*;
}

在外部文件中,只要写server项就好了。

根据上面的Include,可以得知,只要把server配置文件放在sites-enabled文件夹下就好了

####代码段001###

server {
	listen       80;
    server_name  域名; #例如:map.venny.cn;
    
    # 前端匹配
 	location / {
  				proxy_set_header Host $host;
                root /web/front;
                index /index.html;
                try_files $uri $uri/ /index.html;
    }
    
    # 后端匹配
    location  /api/ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			add_header Access-Control-Allow-Methods *;
			add_header Access-Control-Allow-Origin $http_origin;
            proxy_pass http://127.0.0.1:8010/;
    }
}

关于site-enable和site-available文件夹的关系,看看文章开头的参考资料

2.关于反向代理(后端API)

我的前后端是在同一个服务器上。

根据上面的server配置

a.当浏览器访问http://map.venny.cn/时,nginx匹配了 location / ,把vue页面交给浏览器。

b.当前端提交表单时,浏览器会向http://map.venny.cn/api/update/发送POST请求

   此时,nginx匹配了 location /api ,将请求转发给运行在8081端口的后端服务器(我用的flask)

   而flask会接收到 '/update'

   也就是匹配 @app.route('/update', methods=['POST'])

c. 前端发起请求的方式如下(示例)

const service = axios.create({
    baseURL: 'http://map.venny.cn/api',
    timeout: 5000
   });

service.post('/update',fdata); // 点击提交按钮,发起post请求,请求url是http://map.venny.cn/api/update

d.如果是在本地调试,没有nginx中转,那么/api显然是有影响

小结:反向代理(转发)的核心在于,/api会被吞~ 掉~ 呢~ ,影响不了后端路由的路径

n.小错误

错误如下,13: permission denien

stat() "/root/www/tools/index.html" failed (13: Permission denied), client: x, server: x, request: "GET / HTTP/1.1", host: "x"

我把静态网页文件放在了用户目录下(~/www/),导致“启动用户和工作用户不一致

把静态网页文件放在根目录下的某个地方就行

重定向出错

一般是你的root路径写错了,检查一下。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值