nginx部署前端项目时location时root和alias配置
作者:mmseoamin日期:2023-12-25

nginx部署前端项目时location时root和alias配置

  • 操作说明
    • nginx配置文件配置location时使用root方式
      • 以上三种 方式结论验证 用root属性指定的值是要加入到最终路径中的,匹配条件会拼接到路径中
      • 即最终获取的静态页面路径为:域名 + root + 区配条件 + index
      • 备注:方式2 和方式2.1 用于验证 root 属性的值最后的 "/"为非必须,有没有最后一个"/" 都可以访问到
      • nginx配置文件配置location时使用alias方式
        • 以上三种 方式结论验证 用alias属性指定的值,匹配条件不会拼接到路径中,会直接在alias属性的值下面去找资源
        • 即最终获取的静态页面路径为:域名 + alias + index
        • 备注:方式1 和方式1.1 用于验证 alias 属性的值最后的 "/"为必须,没有最后一个"/" 访问不到
        • 完整的nginx配置文件如下

          操作说明

          1、nginx目录中html目录下放置green 前端项目

          监听端口:8181

          nginx配置文件配置location时使用root方式

          	# root 方式
          		#  方式1 域名直接可访问到  即 localhost:8181
          		#location / {
                  #    root   html;
                  #    index  green/index.html green/index.htm;
                  #}
          		
          		#  方式2 域名直接可访问到  即 localhost:8181
          		#location / {
                  #    root   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式2.1 域名直接可访问到  即 localhost:8181
          		#location / {
                  #    root   html/green;
                  #    index  index.html index.htm;
                  #}
          		# 方式3  域名+/green  可访问到  即 localhost:8181/green
                  #location /green/ {
                  #    root   html;
                  #    index  index.html index.htm;
                  #}
          		
          		# 方式3.1  访问不到green下任务资源
                  #location /green/ {
                  #    root   html/green/;
                  #    index  index.html index.htm;
                  #}
          

          以上三种 方式结论验证 用root属性指定的值是要加入到最终路径中的,匹配条件会拼接到路径中

          即最终获取的静态页面路径为:域名 + root + 区配条件 + index

          即找到 localhost:8181/html/green/index.html

          备注:方式2 和方式2.1 用于验证 root 属性的值最后的 “/“为非必须,有没有最后一个”/” 都可以访问到

          nginx配置文件配置location时使用alias方式

          # alias 方式
          		#  方式1  域名直接可访问到  即 localhost:8181
          		#location / {
                  #    alias   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式1.1  访问不到green下任务资源
          		#location / {
                  #    alias   html/green;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式2  域名直接可访问到  即 localhost:8181
          		#location / {
                  #    alias   html/;
                  #    index  green/index.html green/index.htm;
                  #}
          		
          		#  方式3  域名直接可访问到  即 localhost:8181/green
          		#location /green {
                  #    alias   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式3.1  域名直接可访问到  即 localhost:8181/green
          		#location /green/ {
                  #    alias   html/green/;
                  #    index  index.html index.htm;
                  #}
          

          以上三种 方式结论验证 用alias属性指定的值,匹配条件不会拼接到路径中,会直接在alias属性的值下面去找资源

          即最终获取的静态页面路径为:域名 + alias + index

          即找到 localhost:8181/html/green/index.html

          备注:方式1 和方式1.1 用于验证 alias 属性的值最后的 “/“为必须,没有最后一个”/” 访问不到

          完整的nginx配置文件如下

          #user  nobody;
          worker_processes  1;
          #error_log  logs/error.log;
          #error_log  logs/error.log  notice;
          #error_log  logs/error.log  info;
          #pid        logs/nginx.pid;
          events {
              worker_connections  1024;
          }
          http {
              include       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"';
          	
          	map $time_iso8601 $logdate{
                      '~^(?\d{4}-\d{2}-\d{2})' $ymd;
                      default 'date-not-found';
              }
              access_log  logs/access-$logdate.log  main;
              sendfile        on;
              #tcp_nopush     on;
              #keepalive_timeout  0;
              keepalive_timeout  65;
              #gzip  on;
              server {
                  listen       8181;
                  server_name  localhost;
                  access_log  logs/access-$logdate.log  main;
          		
          		# root 方式
          		#  方式1 域名直接可访问到  即 localhost:8181
          		location / {
                      root   html;
                      index  green/index.html green/index.htm;
                  }
          		
          		#  方式2 域名直接可访问到  即 localhost:8181
          		#location / {
                  #    root   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式2.1 域名直接可访问到  即 localhost:8181
          		#location / {
                  #    root   html/green;
                  #    index  index.html index.htm;
                  #}
          		# 方式3  域名+/green  可访问到  即 localhost:8181/green
                  #location /green/ {
                  #    root   html;
                  #    index  index.html index.htm;
                  #}
          		
          		# 方式3.1  访问不到green下任务资源
                  #location /green/ {
                  #    root   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		# 以上三种 方式结论验证  用root属性指定的值是要加入到最终路径中的,匹配条件会拼接到路径中
          		# 即最终获取的静态页面路径为:域名 + root + 区配条件 + index
          		# 即找到 localhost:8181/html/green/index.html
          		# 备注:方式2  和方式2.1 用于验证 root 属性的值最后的 "/"为非必须,有没有最后一个"/" 都可以访问到
          		
          	
          	
          		# alias 方式
          		#  方式1  域名直接可访问到  即 localhost:8181
          		#location / {
                  #    alias   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式1.1  访问不到green下任务资源
          		#location / {
                  #    alias   html/green;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式2  域名直接可访问到  即 localhost:8181
          		#location / {
                  #    alias   html/;
                  #    index  green/index.html green/index.htm;
                  #}
          		
          		#  方式3  域名直接可访问到  即 localhost:8181/green
          		#location /green {
                  #    alias   html/green/;
                  #    index  index.html index.htm;
                  #}
          		
          		#  方式3.1  域名直接可访问到  即 localhost:8181/green
          		#location /green/ {
                  #    alias   html/green/;
                  #    index  index.html index.htm;
                  #}
          		# 以上三种 方式结论验证  用alias属性指定的值,匹配条件不会拼接到路径中,会直接在alias属性的值下面去找资源
          		# 即最终获取的静态页面路径为:域名 + alias +  index
          		# 即找到 localhost:8181/html/green/index.html
          		# 备注:方式1  和方式1.1 用于验证 alias 属性的值最后的 "/"为必须,没有最后一个"/" 访问不到
          		
                  #  后台服务; 
                  location /fdiagnose/ {
          			proxy_ignore_client_abort   on;
          			proxy_set_header Host $http_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;
                  	proxy_pass http://localhost:9090;
                  }
              }
          }