nginx.var.host与nginx.var.http_host的区别

在 Nginx 中,nginx.var.hostnginx.var.http_host 都用于获取 HTTP 请求头中的 Host 字段值,但它们之间有一些细微的区别:

  1. nginx.var.host 这是 Nginx 变量,用于获取当前请求的主机名(不包含端口号)。它是通过 Nginx 内部处理请求时自动生成的,不受客户端请求头的影响。这个变量通常在 Nginx 配置中使用。

    例如,如果客户端请求的 URL 是 http://example.com/some/path,那么nginx.var.host 的值将是 example.com

  2. nginx.var.http_host 这是 Nginx 变量,用于获取 HTTP 请求头中的 Host 字段的值。它直接从客户端请求头中获取,并且可以受到客户端发送的请求头的影响。

    例如,如果客户端请求的 URL 是 http://example.com:8080/some/path,那么nginx.var.http_host 的值将是 example.com:8080,包括端口号。

通常情况下,如果你需要获取主机名(不包含端口号),nginx.var.host 更为合适,因为它会自动去除端口号。如果你需要包含端口号的完整主机信息,可以使用nginx.var.http_host。选择使用哪个取决于你的具体需求和 Nginx 配置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是用于HTTPHTTPS,SMTP,POP3和IMAP协议的开源反向代理服务器,以及负载平衡器,HTTP缓存和Web服务器(原始服务器)。Nginx项目一开始就非常关注高并发,高性能和低内存使用。它获得了两节式BSD许可,并在Linux,BSD变体,Mac OS X,Solaris,AIX,HP-UX以及其他* nix版本上运行。它还具有用于Microsoft Windows的概念证明端口。 托管一些简单的静态内容 $ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx 或者,Dockerfile可以使用简单的方法来生成包含必要内容的新图像(这比上面的绑定安装要干净得多): FROM nginx COPY static-html-directory /usr/share/nginx/html 将此文件放置在与目录相同的目录中(“ static-html-directory”),运行docker build -t some-content-nginx .,然后启动容器: $ docker run --name some-nginx -d some-content-nginx 暴露外部端口 $ docker run --name some-nginx -d -p 8080:80 some-content-nginx 然后,您可以在浏览器中点击http://localhost:8080或http://host-ip:8080。 复杂的配置 $ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx 有关nginx配置文件的语法的信息,请参阅官方文档(特别是《入门指南》)。 如果您希望采用默认配置,请使用以下类似内容从运行的nginx容器中复制它: $ docker run --name tmp-nginx-container -d nginx $ docker cp tmp-nginx-container:/etc/nginx/nginx.conf /host/path/nginx.conf $ docker rm -f tmp-nginx-container 也可以使用简单的Dockerfile(在中/host/path/)更干净地完成此操作: FROM nginx COPY nginx.conf /etc/nginx/nginx.conf 如果您CMD在Dockerfile中添加了自定义,请确保将包含-g daemon off;在其中CMD,以使nginx保持在前台,以便Docker可以正确跟踪进程(否则您的容器将在启动后立即停止)! 然后使用构建图像docker build -t custom-nginx .并按如下所示运行它: $ docker run --name my-custom-nginx-container -d custom-nginxNginx配置中使用环境变量 现成的nginx不支持大多数配置块中的环境变量。但是,envsubst如果您需要在nginx启动之前动态生成nginx配置,则可以将其用作解决方法。 这是使用docker-compose.yml的示例: web: image: nginx volumes: - ./mysite.template:/etc/nginx/conf.d/mysite.template ports: - "8080:80" environment: - NGINX_HOST=foobar.com - NGINX_PORT=80 command: /bin/bash -c "envsubst /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" mysite.template然后,该文件可能包含如下变量引用: listen ${NGINX_PORT}; 在只读模式下运行Nginx 要以只读模式运行nginx,您需要将Docker卷安装到nginx写入信息的每个位置。默认的nginx配置需要对/var/cache和的写权限/var/run。可以通过如下运行nginx轻松地完成此操作: $ d
你可以按照以下步骤来部署 Nginx 并设置 nginx.conf。 1. 首先,确保你的 Linux 服务器上已经安装了 Nginx。如果没有安装,可以使用下面的命令来安装: ``` sudo apt update sudo apt install nginx ``` 2. 安装完成后,打开 nginx.conf 文件进行配置。nginx.conf 文件通常位于 `/etc/nginx` 目录下。可以使用以下命令打开该文件: ``` sudo nano /etc/nginx/nginx.conf ``` 3. 在打开的文件中,你可以找到一些默认的配置。根据你的需要进行修改,例如更改默认的监听端口、指定服务器名称等。以下是一个示例的 nginx.conf 配置文件: ``` user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## # 如果你有 SSL 证书,可以在这里指定 SSL 相关的配置 ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # ... 这里可以添加更多的配置 ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } ``` 4. 修改完配置后,保存并关闭 nginx.conf 文件。 5. 接下来,你可以通过以下命令检查 Nginx 配置是否正确: ``` sudo nginx -t ``` 如果没有错误提示,说明配置文件验证通过。 6. 最后,重新启动 Nginx 以使配置生效: ``` sudo service nginx restart ``` 现在,你的 Nginx 服务器应该已经部署并使用了你修改后的 nginx.conf 配置文件。你可以根据需要进一步添加和修改其他配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值