长虹剑 2021-07-18 20:03 采纳率: 0%
浏览 217

nginx 代理多个网站根目录"/"资源定向问题

在同一台服务器上有两个web服务,他们已经写好了,但是其中很多request都是从根目录发起的, 比如资源都是 /static, action 都是 /edit, /remove /download
启动的时候让他们监听不同的端口比如 4567, 8088。
这样我如何配置 nginx 的 location 实现一个端口的代理这两个网站呢?就是我想实现访问
http://myweb.com/web1/
http://myweb.com/web2/
是两个不同的网站,而且后面所有的资源都是 http://myweb.com/web1/download, http://myweb.com/web1/js/xx.js
就是按照开头的 web1 web2 区分开。
这里最大的问题是,网站里面的链接都是从/发起的,就是呈现出的 href 等,都是类似 "/xxxx"。否则可以按照 https://www.cnblogs.com/fivedays/p/12720232.html 这篇博客的方法来写。

我不清楚这样是否可行,因为他需要能解决如下的问题:
1)如何每次把原始请求都自动加上 /web1, /web2
2) 如何让网站的cookie 也自动分开管理。

  • 写回答

1条回答 默认 最新

  • Jason Ho 2021-07-19 13:53
    关注

    如果你是nginx 的话,nginx.conf 里面一定有这一句:
    include vhost/*.conf;
    你在vhost 中分别独立配置两个conf文件:例如www.baidu.com.conf 和 api.baidu.com.conf ,最好以域名的方式命名

    然后在配置文件中复制如下代码:

    server
        {
            listen 80;  
            server_name api.baidu.com;
            #rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS
            index index.html index.htm index.php default.html default.htm default.php;
            root  /home/wwwroot/api.baidu.com/public;#你的具体目录
             if (!-e $request_filename) {
               rewrite  ^(.*)$  /index.php?s=/$1  last;
            }
          
    
    
            include rewrite/wordpress.conf;
            #error_page   404   /404.html;
    
            # Deny access to PHP files in specific directory
            #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
    
            include enable-php-pathinfo.conf;
    
        location ~* ^.+\.(gif|jpg|jpeg|png|pdf|xlsx|xls|swf|flv|mp3|mp4|ogg|flav|wav|rar|zip)$ {
                add_header Access-Control-Allow-Origin '*';
                add_header Access-Control-Allow-Headers X-Requested-With;
                add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
                expires  30d;
        }
    
            location ~ .*\.(gif|jpg|jpeg|pdf|png|bmp|swf)$
            {
                expires      30d;
            }
    
            location ~ .*\.(js|css)?$
            {
                expires      12h;
            }
    
            location ~ /.well-known {
                allow all;
            }
    
            location ~ /\.
            {
                deny all;
            }
    
    
        location ~ .php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;  
              fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/wwwroot/baidu.com/:/tmp/:/proc/"; 
                include fastcgi_params;
           }
    
    
            access_log  /home/wwwlogs/baidu.com.log;
        }
        
        
        
    #以下属性中,以ssl开头的属性表示与证书配置有关。
    server {
        listen 443 ssl;
        server_name baidu.com; #需要将yourdomain.com替换成证书绑定的域名。
        root /home/wwwroot/baidu.com/public;  #站点目录
        index index.html index.htm;
        ssl_certificate cert/xx.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key cert/xx.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;
        if (!-e $request_filename) {
               rewrite  ^(.*)$  /index.php?s=/$1  last;
            }
    
    
            include rewrite/wordpress.conf;
            #error_page   404   /404.html;
    
            # Deny access to PHP files in specific directory
            #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
    
            include enable-php-pathinfo.conf;
    
            location ~* ^.+\.(gif|jpg|jpeg|png|swf|flv|xlsx|xls|pdf|mp3|mp4|ogg|flav|wav|rar|zip)$ {
                add_header Access-Control-Allow-Origin '*';
                add_header Access-Control-Allow-Headers X-Requested-With;
                add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    
                expires 30d;
                access_log off;
    
                 # valid_referers none blocked  ddd;
                   #if ($invalid_referer) {
                   #   return 404;
                   #   break;
                   #}
            }
    
            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires      30d;
            }
    
            location ~ .*\.(js|css)?$
            {
                expires      12h;
            }
    
            location ~ /.well-known {
                allow all;
            }
    
            location ~ /\.
            {
                deny all;
            }
            
    
            location ~ \.php(.*)$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO  $fastcgi_path_info;
                fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
                include        fastcgi_params;
            }
    
    
        
    }
    
    
    
    
    
    
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 7月20日
  • 修改了问题 7月19日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算