美文网首页
nginx 配置问题

nginx 配置问题

作者: 墨色尘埃 | 来源:发表于2019-04-23 15:12 被阅读0次
    1、nginx转发问题

    前端不启动tomcat,直接用nginx作为服务器,前端npm run build后的文件放在指定目录D:/jscmp/下,使用alias,末尾需要加上斜杠/。百度:alias nginx相关问题

     ################################# WEB后台服务代理 #####################################################  
       upstream jscmp{
       
          server 172.16.11.66:9000;
      
        }
    
    #########################           
            location /jscmp/ {
    
                alias  D:/jscmp/;  ###末尾需要加上斜杠/
                autoindex on;
            }
    
    2、nginx配置问题

    传送门:贵安项目nginx配置
    考试系统
    配置文件中加了一个upstream jscmpPlatlocation /api/
    前端不应该在配置文件projectBuild.config.ts中加上"target": "http://172.16.11.66:10010"后面加上/api
    projectBuild.config.ts

    image.png
    image.png

    标注1图片中的③处的api应该说是同一个,页面访问接口的时候会带上这个api,与location处的api相同时,走proxy_pass http://jscmpPlat/,然后转发到server 172.16.11.66:10010;处,这个就是服务器上的项目的接口了。(项目的接口里本身就有一个api,所以页面上看到的请求接口会是两个/api,一个是标注1,还有一个是接口里的,例如这个url http://172.16.11.66:8180/api/api/role/list?

    nginx代理后台项目的时候,location /api/这里的意思是匹配项目里前缀以/api的接口名,当匹配上之后,通过proxy_pass http://jscmpPlat/转发到server 172.16.11.66:10010;处。前端不应该在配置文件中projectBuild.config.ts加/api

    贵安项目企业云系统
    ①前端服务被nginx代理了,所以要加上路径/qyy
    浏览器中输入: http://host:port/qyy/#/Login
    ②进入location /qyy/ {.........proxy_pass http://qianduan; } 通过proxy_pass转发到http://qianduan,地址为 upstream qianduan{ server 172.16.11.39:8000;}
    ③ 看下代理后前端页面的访问接口http://172.16.11.66:8180/v1/enterpriseInfo?rows=6&page=1 可以看到url中并没有/qyy路径,这是因为/qyy是前端服务被代理时加上的路径,和后台服务并没有关系。看下后台服务被代理时如下,用了/,而没有加路径,所以url中没有路径,如果这里改为location /houtai的话,那么url就变为http://172.16.11.66:8180/houtai/v1/enterpriseInfo?rows=6&page=1

            #########################  访问贵安云谷后台服务  (后台服务,这里没有添加路径,只用了/代替)   
            ###### 这里没有加路径
            location / {
           
                access_log off;
                access_log  logs/access-server-$log_time.log  logfiles_187;
      
                #proxy_set_header Host $http_host;  
                #proxy_set_header X-Real-IP $remote_addr;  
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://Dservers;
    
            }
    
    image.png

    贵安的后台项目用nginx代理的时候,没有使用路径,是因为后台项目的接口没有统一的前缀,如果nginx里定义了一个名称A,那么就会有的接口匹配有的接口不匹配,所以location后是空的。

    3、关于proxy_pass后斜杠问题

    这篇文章 贵安项目nginx配置 是以IIS服务举例的,模板等文件被设为IIS服务,模板被放在E:\guian_files\files下,斜杠和E:\guian_files\files里的物理路径\files有关??对于考试系统的项目,既然后台被代理了,接口中有两个/api的话,那么proxy_pass http://jscmpPlat/最后需要加斜杠

    2019-04-22理解:这里图片等文件是通过IIS方式启动服务,前端工程没有在配置文件中的访问后台地址那里专门加上/mh
    比较(1)/(2)/(3)/(4)/种方式的urlA和urlC
    总结:
    名称A相同,没有斜杠,接口名urlA中不会加上A,urlC中不会加上A(✔)
    名称A相同,有斜杠,接口urlA名中会加上A,urlC中不会加上A(✔)
    名称A不相同,没有斜杠,接口urlA名中会加上A,urlC中会加上A(✘)
    名称A不相同,有斜杠,接口urlA名中会加上A,urlC中不会加上A(✔)

    贵安云谷和考试系统的nginx配置文件

    #user  nobody;
    worker_processes  16;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  2048;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    
        log_format  logfiles_187  '$remote_addr - $remote_user [$time_iso8601] "$request" '
                          '[$status] $body_bytes_sent "[$http_referer]" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
      
    
      ################################# WEB后台服务代理 #####################################################  
        upstream jscmpPlat{
       
          server 172.16.11.66:10010;
      
        }
        
     ################################# WEB后台服务代理 #####################################################  
        upstream Dservers{
       
          server 172.16.11.66:10002;
      
        }
    
     ################################# 前台服务代理 #####################################################      
        upstream qianduan{
       
          server 172.16.11.39:8000;
        }
    
        
     ################################# 手机后台服务代理 #####################################################      
        upstream Mobile{
          server 172.16.11.39:8000 down;
          server 172.16.11.68:8180;
        }
            
    
     ################################# IIS文件服务代理 #####################################################      
        upstream FTPfiles{
       
          server 172.16.11.39:8081;   
        }
    
    
    
        server {
            listen       8180;          #(这里的8180是浏览器里的端口,如果配置了nginx,那么监听端口一定是这个)
            server_name  172.16.11.66
            charset utf-8;
    
            if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
                    set $log_time $1;
        }
        
        #client_max_body_size 10m;
        #client_body_buffer_size 1280k;
    
            ######################### 报名考试系统   (代理的是前端)
            ########## (这里没有放在tomcat下,通过nginx启动前端服务。代理的是前端,所以浏览器里需要加上路径/jscmp)       
            location /jscmp/ {
    
                alias  D:/jscmp/;
            }
     
            ######################### 报名考试系统后台   
            ##########(代理的是后台服务,这里添加路径/api/,所以接口里要多一个路径)  
            ########## http://172.16.11.66:8180/api/api/authSubject/page?size=20&current=1&subjectType=1101         
            location /api/ {
    
                access_log off;
                access_log  logs/access-mh-$log_time.log  logfiles_187;
             
                proxy_set_header Host $http_host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://jscmpPlat/;
    
            }       
    
            ######################### 访问统一门户系统  (代理的是前端) 
            ################## (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/mh)  
            ####### http://172.16.11.66:8180/mh/#/Login          
            location /mh/ {
    
                access_log off;
                access_log  logs/access-mh-$log_time.log  logfiles_187;
             
                proxy_set_header Host $http_host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://qianduan;
    
            }
            
            ######################### 访问物业管理系统  (代理的是前端) 
            ######## (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/wy)   
            ####### http://172.16.11.66:8180/wy/#/Login          
            location /wy/ {
    
                access_log off;
                access_log  logs/access-mh-$log_time.log  logfiles_187;
             
                proxy_set_header Host $http_host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://qianduan;
    
            }
            
            
            ######################### 访问运营管理系统 (代理的是前端) 
            ####### (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/yy)   
            ####### http://172.16.11.66:8180/yy/#/Login
            location /yy/ {
    
                access_log off;
                access_log  logs/access-yy-$log_time.log  logfiles_187;
             
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                proxy_set_header Host $http_host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;   
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://qianduan;
    
            }
            
            ######################### 访问企业云系统 (代理的是前端) 
            ####### (发布在tomcat下,有端口172.16.11.39:8000。代理的是前端,所以浏览器里需要加上路径/qyy)  
            ####### http://host:port/qyy/#/Login           
            location /qyy/ {
             
                access_log off; 
                access_log  logs/access-qyy-$log_time.log  logfiles_187;
    
                proxy_set_header Host $http_host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://qianduan;
    
            }
    
            
            ######################### 手机App页面管理  (代理的是app前后台,因为这个是不分离开发方式)
            ######(发布在tomcat下,有端口172.16.11.68:8180。代理的是前端,所以浏览器里需要加上路径/parkmall)   
            ####### http://172.16.11.68:8180/parkmall/loginAction.do?login        
            location /parkmall/ {
           
                access_log off;
                access_log  logs/access-mh-$log_time.log  logfiles_187;
             
                proxy_set_header Host $http_host;  
                proxy_set_header X-Real-IP $remote_addr;  
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://Mobile;
    
            } 
    
            ######################### 访问IIS 文件服务器   (代理的是IIS,相当于一个网站,应该归于前端)
            ######(模板等文件,设置了IIS服务,有端口172.16.11.39:8081。代理的是前端,所以浏览器里需要加上路径/files)   
            ####### http://172.16.11.66:8180/files/templates/ggg.jpeg  
            location /files/ {
           
                access_log off;
                access_log  logs/access-ftp-$log_time.log  logfiles_187;
      
                #proxy_redirect     http:// $scheme://;
                #proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    
      
                #proxy_set_header Host $http_host;  
                #proxy_set_header X-Real-IP $remote_addr;  
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://FTPfiles;
    
            } 
            #########################  访问贵安云谷后台服务  (代理的是后台服务,这里没有添加路径,只用了/代替)   
            ###### 这里没有加路径
            ###### http://172.16.11.66:8180/v1/enterpriseInfo?rows=6&page=1
            location / {
           
                access_log off;
                access_log  logs/access-server-$log_time.log  logfiles_187;
      
                #proxy_set_header Host $http_host;  
                #proxy_set_header X-Real-IP $remote_addr;  
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_connect_timeout 900; 
                proxy_send_timeout 900; 
                proxy_read_timeout 900; 
                # proxy_buffer_size 400k; 
                # proxy_buffers 40 320k; 
                # proxy_busy_buffers_size 640k; 
                # proxy_temp_file_write_size 640k;  
    
                #此处配置的域名必须与upstream的域名一致,才能转发。
    
                proxy_pass     http://Dservers;
    
            }
           
            error_page  404  /404.html;
    
            location = /40x.html {
                root   html;
            }
            
            # redirect server error pages to the static page /50x.html
    
            error_page   500 502 503 504  /50x.html;
            
            location = /50x.html {
                root   html;
            }           
    
                        
        }
     
    }
    
    

    相关文章

      网友评论

          本文标题:nginx 配置问题

          本文链接:https://www.haomeiwen.com/subject/slpmgqtx.html