最新消息:20210917 已从crifan.com换到crifan.org

【已解决】实现二级域名端口转发需要配置nginx的哪些参数以及如何配置

参数 crifan 563浏览 0评论
折腾:
【未解决】阿里云中二级域名转发中如何实现端口转发
期间,对于二级域名来说,已经通过DNS配置好了服务器转发。
现在想要实现基本的端口转发。
需要搞清楚:nginx相关有哪些参数需要配置,以及各个参数的含义是啥
暂时设置为:
server
{
    listen 80;
    server_name 
dev.xxx;

    location /storybook/
    {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass 
http://xxx:33800;
    }

    access_log  /www/wwwlogs/
dev.xxx.log;
}
但是一些参数,别的地方
https://www.jianshu.com/p/df37a55a63c5
写法不同:
  • proxy_set_header Host $http_host;
  • 多了:
    • proxy_set_header X-Forwarded-Proto $scheme;
    • proxy_buffering off;
所以还是要去搞清楚这些参数才行
nginx做二级域名转发显示端口号!!-CSDN论坛
对于很多个:proxy_set_header等参数,都是放在 location之外的
upstream 
blog.abc.com
 {
  server 192.168.1.17:8081     weight=1   max_fails=3 fail_timeout=10s;
}
server {
  listen       80;
  server_name  
blog.abc.com;
  server_name_in_redirect off;
  proxy_redirect off;
  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;
  location / {
      proxy_pass     
http://blog.abc.com/;
  }
}
nginx server location
nginx配置location总结及rewrite规则写法 | Sean’s Notes
location /documents/ {
  # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ configuration C ]
}
是我此处想要的
“全局变量
* $host : 请求主机头字段,否则为服务器名称。”
另外,由于此处被转发的服务器中记录api访问日志,所以也想要保留其他很多字段:
“* $args : #这个变量等于请求行中的参数,同$query_string
* $content_type : 请求头中的Content-Type字段。
* $http_user_agent : 客户端agent信息
* $request_method : 客户端请求的动作,通常为GET或POST。
* $remote_addr : 客户端的IP地址。
* $remote_port : 客户端的端口。
* $server_port : 请求到达服务器的端口号。
…”
此处要去搞清楚:proxy_pass
这个词的含义
会不会把其他各个信息,包括$request_method等等,都传递过去?
nginx的location配置详解 – Java高知 – CSDN博客
一文弄懂Nginx的location匹配 – 个人文章 – SegmentFault 思否
至此,基本上搞懂了基本的location的匹配规则
但是需要再去搞清楚上面所说的很多参数的含义,以及proxy_pass的含义
nginx.conf配置文檔解析(http、server、location proxy_pass) – 掃文資訊
Nginx location 配置踩坑过程分享 – Coding 博客
3、Nginx关于server块和location块的配置-zenge_nodes-51CTO博客
Understanding Nginx Server and Location Block Selection Algorithms | DigitalOcean
Beginner’s Guide
Module ngx_http_proxy_module
看到另外一些:
proxy_pass_header
proxy_pass_request_body
不知道和:
proxy_set_header
是什么区别
Module ngx_http_proxy_module
好像是:
默认proxy_pass_request_headers是on的
—》会自动转发pass传递过去,所有的header?
How to Configure NGINX
Nginx 的location配置详解-天真小同志-51CTO博客
nginx proxy 含义
nginx 配置之 proxy_pass 神器! – Web 技术研究所
【总结】
最后是参考:
Nginx —— 理解HTTP 代理,负载均衡,缓冲(Buffering)和缓存(Caching)
想要实现转发的功能的话,则最最基本的配置是:
# server context

location /match/here {
    proxy_pass http://example.com;
}
而由于要保留原始的一些header参数和其他参数,则更加常见的配置是:
# server context

location /match/here {
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://example.com/new/prefix;
}
而想要proxy的设置针对多个location,可以提取出来,放到公共部分:
# server context

proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_Header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

location /match/here {
    proxy_pass http://example.com/new/prefix;
}

location /different/match {
    proxy_pass http://example.com;
}
更多的参数的解释,则详见:
Nginx —— 理解HTTP 代理,负载均衡,缓冲(Buffering)和缓存(Caching)
和:
nginx的官网:
Module ngx_http_proxy_module
的例子:
location / {
    proxy_pass       
http://localhost:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}
而此处自己的设置是:
server
{
    listen 80;
    server_name dev.xxx;

    access_log  /var/log/nginx/dev.xxx/access.log;
    error_log   /var/log/nginx/dev.xxx/error.log;

    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;

    location /storybook/
    {
        # proxy_redirect off;

        # proxy_pass http://xxx:33800;
        proxy_pass http://xxx:33800/;
    }

}

转载请注明:在路上 » 【已解决】实现二级域名端口转发需要配置nginx的哪些参数以及如何配置

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.203 seconds, using 23.40MB memory