社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

两个nginx中服务器设置的关系是什么。conf和proxy。形态?

lei lei • 3 年前 • 505 次点击  

我对NGINX非常熟悉。

在我的项目中 server 两者都有定义 etc/nginx/nginx.conf etc/nginx/conf.d/proxy.conf etc/nginx/conf.d/proxy。形态 包括在 nginx.conf

我不明白这两个文件中服务器设置的关系。例如 nginx。形态 ,服务器的设置为 listen 80 ; listen [::]:80 ; 代理。conf,服务器的设置为 listen 80 proxy_protocol .

  1. 在上面的例子中,哪种设置将用于实际通信?
  2. 执行服务器的代理设置。conf覆盖服务器的nginx设置。形态?
  3. 或者服务器的代理设置。conf将被合并到nginx的服务器设置中。形态?

请查找完整的conf文件,如下所示:

etc/nginx/conf.d/proxy。形态

content: |
  client_max_body_size 500M;
  server_names_hash_bucket_size 128;

  upstream backend {
    server unix:///var/run/puma/my_app.sock;
  }

  server {
     listen 80 proxy_protocol;

     access_log /var/log/nginx/access.log;
     error_log /var/log/nginx/error.log;
  
     large_client_header_buffers 8 32k;

     set_real_ip_from 10.0.0.0/8;
     real_ip_header proxy_protocol;

    location / {
       proxy_http_version 1.1;
       proxy_set_header X-Real-IP $proxy_protocol_addr;
       proxy_set_header X-Forwarded-For $proxy_protocol_addr;
       proxy_set_header Host $http_host;
       proxy_set_header X-NginX-Proxy true;
       proxy_buffers 8 32k;
       proxy_buffer_size 64k;
       proxy_pass http://backend;
       proxy_redirect off;

       Enables WebSocket support
     location /v1/cable {
         proxy_pass http://backend;
         proxy_http_version 1.1;
         proxy_set_header Upgrade "websocket";
         proxy_set_header Connection "Upgrade";
         proxy_set_header X-Real-IP $proxy_protocol_addr;
         proxy_set_header X-Forwarded-For $proxy_protocol_addr;
      }
    }
  }

etc/nginx/nginx。形态

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    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;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 ;
        listen       [::]:80 ;
        server_name  localhost;
        root         /usr/share/nginx/html;

        location / {
        }      
    }   
}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129454
 
505 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Richard Smith
Reply   •   1 楼
Richard Smith    4 年前

Nginx选择一个 server 块来根据 listen server_name 指令。

如果找不到匹配的服务器名称,将使用该端口的默认服务器。

在您问题中的配置中 服务器 封锁 proxy.conf 首先遇到,因此它实际上成为端口80的默认服务器。

这个 服务器 封锁 nginx.conf 将只匹配使用正确主机名的请求,即。 http://localhost

看见 this document 详细信息。