nginx 多配置(.conf)的使用

这篇具有很好参考价值的文章主要介绍了nginx 多配置(.conf)的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通常情况下我们在一个.conf 承载好多服务代理的配置,使用.conf 文件过大,过长,以至于管理难,有时修改某个小配置,由于重起或重截配置文件,使用服务受影响。因此使用多配置组合的方式进行管理很有必要。

注意:本文中配置的文件和影射的目录文件,因为我用的是docker 镜像挂载,所以目录要注意宿主的还是容器的目录。

举例:如在一个conf 下的样例


#############################################################
#
#           fengsh998 
#           nginx 反向代理设置,统一集管处,机器不够的话开集群。
#         包括:
#             SSL,限流,跨域,集群,黑名单,白名单,负载均衡
#
#         $PWD = /opt/nginx
#         docker run -p 443:443 -p 80:80 -p 18883:1883 -p 33060:3306 -p 38066:8066 --name nginx
#         -v $PWD/www:/www
#         -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
#         -v $PWD/conf/modules:/usr/share/nginx
#         -v $PWD/logs:/wwwlogs
#         -v $PWD/cert:/opt/nginx/cert
#         -d nginx
#############################################################

user nginx;

#指定进程数
worker_processes auto;

#错误日志
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

#动态加载外部配置文件【inclue 路径 + *.conf 】
include /usr/share/nginx/modules/*.conf;

#每个进程的最大连接数 
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;
    access_log  /wwwlogs/httpproxy.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;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    # 加载配置
    include /etc/nginx/conf.d/*.conf;

    #################################################
    #
    #               wiki 服务 
    #   可以设多个server进行负载均衡
    #   IP绑定 ip_hash每个请求按访问ip的hash结果分配,这样
    #   每个访客固定访问一个后端服务器,可以解决session的问题。
    #
    ################################################# 
    upstream jira_server {
       server 172.xx.206.109:8080;
    }

    upstream wiki_server {
       server 172.xx.206.109:8090;
    }

    upstream git_server {
       server 172.xx.206.109:8999;
    }

    upstream kibana_server {
       server 172.xx.188.21:5601;
    }

    upstream nexus_admin { server 47.xxx.xx.126:18888 ; }
    upstream nexus_registry { server 47.xxx.xx.126:18888 ; }

    #########################以下是服务配置以上是负载均衡############################
    
    #############################################################################
    #
    #                   使用重定向方式,来把http转为ssl
    #
    #    .company.com 等效于 company.com wwww.company.com *.company.com
    #
    #############################################################################

    server {
       listen 80;
       server_name advert.company.com;
       location / {
          proxy_pass http://advert.igaicloud.cn:8000;
       }
    }

        #dashboard
   server {

           listen 80;
          
           server_name  dashboard.company.com;

           location / {
                root      /www/dashboard;
                index   index.html  index.htm;
           }

           error_page  404 403 500 502 503 504 /404.html;
           location = /404.html {
                root  /www;
           }

    }


#    server { 
#    	listen 80;
#    	server_name .company.com;       #使用通配的方式
#	rewrite ^(.*)$ https://$http_host$request_uri? permanent;
#    }

    server {
        listen       443 ssl;
        listen       [::]:443 ssl;

        #访问的域名
        server_name  .company.com;
   
        #ssl 证书配置
        ssl_certificate "/opt/nginx/cert/company.com.pem";
        ssl_certificate_key "/opt/nginx/cert/company.com.key";

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        # 泛域名开始配置 subdomain.domain.com的格式
        if ( $host ~* (.*)\.(.*)\.(.*) ) {
            set $domain_pix $1; #获取当前的域名前缀 eg wiki.company.com则domain被设置为wiki
        }

        #jira
        if ($domain_pix = jira) {
            set $goserver jira_server; 
        }

        if ($domain_pix = wiki2) {
            set $goserver wiki_server;
        }
        
         #gitlab 映射
        if ($domain_pix = gitlab) {
            set $goserver git_server;
        }

        #代理配置
        location / {

                #############################################################
		#
		#    跨域配置
		#
		#############################################################

                #开启代理错误拦截功能
                proxy_intercept_errors on;
  
                proxy_pass  http://$goserver;
                
                proxy_set_header Host $host;
                #缓存key规则,自动清除缓存
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forward-Proto https;

                proxy_buffering off;
                proxy_request_buffering off;

                client_max_body_size 1G;
                proxy_connect_timeout 3000;
                proxy_send_timeout 3000;
                proxy_read_timeout 3000;

                tcp_nodelay        on;  
                
        }

        location /localwebsite {
            root  /www/mobile;
       	}

        location ^~ /kibana {
                proxy_pass  http://kibana_server;

                proxy_set_header Host $host;
                #缓存key规则,自动清除缓存
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forward-Proto https;

        }

        #屏蔽wiki直接输入访问,所以做了个重定向
        location /browsepeople.action {
            rewrite ^(.*)$ https://wiki.company.com permanent;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }   ###end server ssl
 
    #dashboard
#   server {
#           listen       443 ssl;
#           listen       [::]:443 ssl;
           #正式环境的站点
#           server_name  dashboard.company.com;

           #ssl 证书配置
#           ssl_certificate "/opt/nginx/cert/company.com.pem";
#           ssl_certificate_key "/opt/nginx/cert/company.com.key";

#           ssl_session_cache shared:SSL:1m;
#           ssl_session_timeout  10m;
#           ssl_ciphers HIGH:!aNULL:!MD5;
#           ssl_prefer_server_ciphers on;
#           ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

#           location / {
#                root      /www/dashboard;
#                index   index.html  index.htm;
#           }

#           error_page  404 403 500 502 503 504 /404.html;
#           location = /404.html {
#                root  /www;
#           }

#    }
    

 
}

stream {
    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

    access_log /wwwlogs/tcp-access.log proxy;
    open_log_file_cache off;

    upstream mysql_server {
        server 172.xx.218.228:33060;
        server 172.xx.218.229:33060;
    }
 
    server {
        listen     3306;
        proxy_connect_timeout 10s;
        proxy_timeout 525600m;
        proxy_pass mysql_server;  
    }
}

进行多文件管理,做多文件管理之前做好目录结构管理,以便于自己管理起来方便。都放一起也行,看个人。

nginx 多配置(.conf)的使用

 nginx 多配置(.conf)的使用

分别来看单个配置文件的内容:

总配置文件 

nginx.conf


#############################################################
#
#           fengsh998 
#           nginx 反向代理设置,统一集管处,机器不够的话开集群。
#         包括:
#             SSL,限流,跨域,集群,黑名单,白名单,负载均衡
#
#         $PWD = /opt/nginx
#         docker run -p 443:443 -p 80:80 -p 18883:1883 -p 33060:3306 -p 38066:8066 --name nginx
#         -v $PWD/www:/www
#         -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
#         -v $PWD/conf/modules:/usr/share/nginx
#         -v $PWD/logs:/wwwlogs
#         -v $PWD/cert:/opt/nginx/cert
#         -d nginx
#############################################################

user nginx;

#指定进程数
worker_processes auto;

#错误日志
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

#动态加载外部配置文件【inclue 路径 + *.conf 】
include /usr/share/nginx/modules/*.conf;

#每个进程的最大连接数 
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;
    access_log  /wwwlogs/httpproxy.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;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    # 加载配置
    include /etc/nginx/conf.d/*.conf;
    #加载upstream模块
    include /usr/share/nginx/ups_modules_http.conf;
    #加载http server 模块
    include /usr/share/nginx/http_servers/*.conf;    
 
}

stream {
    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';

    access_log /wwwlogs/tcp-access.log proxy;
    open_log_file_cache off;

    #挂载盘opt/nginx/conf/modules
    include /usr/share/nginx/stream_servers/*.conf;
}

ups_modules_http.conf

    ################################################ 
    #   可以设多个server进行负载均衡
    #   IP绑定 ip_hash每个请求按访问ip的hash结果分配,这样
    #   每个访客固定访问一个后端服务器,可以解决session的问题。
    #
    ################################################# 
    upstream jira_server {
       server 172.xx.206.109:8080;
    }

    upstream wiki_server {
       server 172.xx.206.109:8090;
    }

    upstream git_server {
       server 172.xx.206.109:8999;
    }

    upstream hostapi_arm2_server {
       server 172.xx.206.111:32000;
    }

    upstream kibana_server {
       #server 172.xx.188.21:5601;
       #server 172.xx.206.112:5601;
       server 172.xx.218.227:5601;
    }

    #测试用
    upstream eureka_server {
       #server 172.xx.188.23:8761;
       server 172.xx.188.28:8001;
    }

    upstream nexus_admin { server 47.xxx.xx.126:18888 ; }
    upstream nexus_registry { server 47.xxx.xx.126:18888 ; }

mysql.conf


    upstream mysql_server {
        server 172.xx.xxx.228:33060;
        server 172.xx.xxx.229:33060;
    }
 
    server {
        listen     3306;
        proxy_connect_timeout 10s;
        proxy_timeout 525600m;
        proxy_pass mysql_server;  
    }

match.conf 当一个顶级通配域名时,可以通过规则进行匹配处理。


    #将所有来自http的都自动跳转为https;
    server { 
       listen 80;
       server_name .company.com;       #使用通配的方式
       rewrite ^(.*)$ https://$http_host$request_uri? permanent;
    }

    server {
        listen       443 ssl;
        listen       [::]:443 ssl;

        #访问的域名
        server_name  .company.com;
   
        #ssl 证书配置
        ssl_certificate "/opt/nginx/cert/company.com.pem";
        ssl_certificate_key "/opt/nginx/cert/company.com.key";

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        # 泛域名开始配置 subdomain.domain.com的格式
        if ( $host ~* (.*)\.(.*)\.(.*) ) {
            set $domain_pix $1; #获取当前的域名前缀 eg wiki.company.com则domain被设置为wiki
        }

        if ( $host ~* (.*)\.(.*)\.(.*)\.(.*) ) {
           set $subdomain_pix $1;
        }

        if ($subdomain_pix = eureka) {
          set $goserver eureka_server;
        }

        #jira
        if ($domain_pix = jira) {
            set $goserver jira_server;
           # set $goserver kibana_server; 
        }

        if ($domain_pix = wiki2) {
            set $goserver wiki_server;
        }

        if ($domain_pix = arm2api) {
            set $goserver hostapi_arm2_server;
        }

        #gitlab 映射
        if ($domain_pix = gitlab) {
            set $goserver git_server;
        }

        #kibana
        #if ($domain_pix = kibana) {
        #   set $goserver kibana_server;
        #}

        #代理配置
        location / {

                #开启代理错误拦截功能
                proxy_intercept_errors on;
  
                proxy_pass  http://$goserver;
                proxy_set_header Host $host;
                #缓存key规则,自动清除缓存
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Server $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forward-Proto https;

                proxy_buffering off;
                proxy_request_buffering off;

                client_max_body_size 1G;
                proxy_connect_timeout 3000;
                proxy_send_timeout 3000;
                proxy_read_timeout 3000;

                tcp_nodelay        on;  
                
        }
 
        location /localwebsite {
            root  /www/mobile;
        }

        location /kibana/ {
           auth_basic "请输入用户密码"; #这里是验证时的提示信息
           auth_basic_user_file /opt/nginx/cert/passwd/fkibana;

           proxy_pass http://kibana_server/;
           rewrite ^/kibabna/(.*)$ /$1 break;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header Host $host:$server_port;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_http_version 1.1;
        }

        #屏蔽wiki直接输入访问,所以做了个重定向
        location /browsepeople.action {
            rewrite ^(.*)$ https://wiki.company.com permanent;
        }
        
        error_page 404 /404.html;
        location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }   ###end server ssl

dashbroad.conf文章来源地址https://www.toymoban.com/news/detail-510111.html


    server {

           listen 80;
          
           server_name  dashboard.company.com;

           location / {
                root      /www/dashboard;
                index   index.html  index.htm;
           }

           location ^~ /visitor/ {
                root /www/;
                try_files $uri $uri/ /index.html last;
                index   index.html  index.htm;
           }

#           location / {
 #            	 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_set_header X-NginX-Proxy true;
     #            proxy_pass http://172.xx.xxx.112:18900;
#	   }

           error_page  404 403 500 502 503 504 /404.html;
           location = /404.html {
                root  /www;
           }

    }

到了这里,关于nginx 多配置(.conf)的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx代理nginx.conf配置——nginx对静态文件代理

    如果需要将资源代理到不同的目录下,则在nginx.conf中的server节点下进行如下配置: 修改后,重新加载nginx配置即可,nginx部分命令如下: 在server中添加如下配置(示例listen端口为80) 访问:localhost/video/demo.mp4即可访问

    2024年02月08日
    浏览(47)
  • Nginx代理nginx.conf配置——反向代理(对WebSocket支持)

    基于Nginx代理nginx.conf配置——反向代理,如果要添加websocket支持,需要进行如下配置 在http中添加一下配置,添加对websocket支持 配置后重新运行nginx后,websocket即可成功代理。 注意防火墙端口是否开放、nginx如果使用docker,其对应的端口是否映射出来。

    2024年02月13日
    浏览(30)
  • Nginx网站服务详解(Nginx服务的主配置文件 ——nginx.conf)

    目录 一、全局配置的六个模块简介 二、Nginx配置文件的详解 1)全局配置模块  2)I/O 事件配置  3)HTTP 配置  4)web服务监听设置 5)其他设置 location常见配置指令:“root、alias、proxy_pass 对比:  当设置  location /test{     },alias /var/www/html  和   root /var/www/html  有什么区别

    2024年02月07日
    浏览(47)
  • 解析Nginx配置文件conf中的常用块

    Nginx是一个高性能的HTTP和反向代理服务器,它的配置文件主要由多个块组成。 本文将介绍Nginx配置文件中的常用块及其功能 。 events块 events块用于设置Nginx的工作模式和连接数相关的参数。 http块 http块用于配置Nginx处理HTTP请求的相关参数。 server块 server块用于配置一个虚拟主

    2024年01月19日
    浏览(40)
  • 一文彻底搞懂Nginx的.conf文件路径配置

    前言:最近在Nginx上部署Vue项目,同时还存了一些静态资源,但我查了好久都没找到一篇详细介绍路径配置的文章,因此就根据我有限的经验写了这篇文章,希望能够对读者有所帮助 如下图所示,这是我配置好的一个server代码块,我这里配置了https,所以会比默认的多一部分

    2024年02月09日
    浏览(35)
  • Python 中的 TypeError: an integer is required 错误通常是由于我们在代码中使用整数(integer)参数的地方实际上传递

    Python 中的 TypeError: an integer is required 错误通常是由于我们在代码中使用整数(integer)参数的地方实际上传递了非整数类型的参数,例如字符串(string)或浮点数(float)。这个错误可以在编写 Python 程序时遇到,但也可能是在编写 Python 脚本时遇到。 下面是解决 TypeError: an i

    2024年02月15日
    浏览(36)
  • Linux中如何修改nginx的nginx.conf配置文件,并刷新生效?

     1、进入nginx的conf目录(按照自己实际的路径来) 2、 可以先查看当前配置文件内容 3、回车查看更多 4、vim进入修改文件 5、修改之后 按 Esc 键退出,输入 :wq 保存退出 6、执行 ./sbin/nginx -t命令测试nginx.conf文件是否合法  7、重启nginx 杀掉进程,重启nginx,实现重启nginx服务

    2024年02月16日
    浏览(35)
  • win下 Nginx.conf 路径配置注意事项(win)

    win下 Nginx.conf 路径配置规范 网上有种说法是win下Nginx不能设置绝对路径,但我在Nginx-1.24.0下是设置成功的。 如使用: C:软件Nginx 路径,nginx会报找不到文件的错误。 如使用: C:Program FilesNginx 路径,nginx会报找不到文件的错误。除非改成: C:ProgramFilesNginx 如使用: C:ngin

    2024年02月11日
    浏览(35)
  • nginx配置https后报错nginx: [emerg] https protocol requires SSL support in XXX.conf详细解决方法

    最近,在测试环境的nginx里增加了一个 https 配置: 然后,执行命令: 结果,nginx就报错了: 百度发现,是之前安装nginx时没有安装ssl模块,需要重新安装一个nginx。步骤如下: 1.下载好nginx安装包,例如 nginx-1.17.2.tar.gz 2.查看下目前nginx使用的配置是什么: 发现,确实没有ss

    2023年04月08日
    浏览(47)
  • Centos7通过nginx+tomcat部署Vue+SpringBoot项目(超详细步骤,从nginx+tomcat安装到Vue+SpringBoot打包配置+nginx.conf)

    目录 一丶前言 二、安装nginx 1.准备nginx 2.服务器上传nginx 3.解压nginx  4.安装相关依赖库 5.编译nginx 6.启动nginx 7.访问nginx  8.安装成系统服务 三、安装Tomcat 1.安装JDK(如果安装并配置环境变量了可以略过) 2.准备Tomcat 3.服务器上传tomcat 4.解压tomcat  5.启动tomcat 6.访问tomcat 7.设置

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包