Nginx 配置解析

Posted 回首笑人间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 配置解析相关的知识,希望对你有一定的参考价值。

概述:本篇文章主要对nginx配置文件中一些常用配置进行了讲解,和如何使用Docker进行安装Nginx。因为该文章是回首在工作闲暇之余整理的,还有待完善,如果有疑义和更好的建议的朋友可以留言给我。

#运行用户,默认即是nginx,可不设置
#user  nobody;
#nginx进程,一般设置为和cpu核数一样
worker_processes  1;
 #;单个后台worker process进程的最大并发链接数
events {
    worker_connections  1024;                      
}
http {
    #文件扩展名与类型映射表
    include       mime.types;    
    #默认文件类型
    default_type  application/octet-stream;
    #开启高效传输模式
    sendfile        on;
    #连接超时时间,单位是秒
    keepalive_timeout  65;
    server {
        #监听端口
        listen       80;
        #映射域名
        server_name  www.abc.com;
        #可以实现多种编码识别
        charset utf-8;
		
		#nginx添加自定义header.表明,该资源可以被任意外域访问,用作跨域请求使用
		add_header Access-Control-Allow-Origin *;
		
		location / {
		    #请求转向mysvr 定义的服务器列表
			proxy_pass http://192.168.126.1:9000/;
			#用来在后端获取用户发送过来的请求头
			proxy_set_header  Host $host;
			#用来获取客户端的IP
			proxy_set_header  Remote_Addr    $remote_addr;
			#在后端这样获取:request.getAttribute("X-real-ip")
			proxy_set_header  X-Real-IP  $remote_addr;
			#后端通过request.getAttribute("X-Forwarded-For")获得的将会是客户端ip和第一台nginx的ip
			proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
			#访问http://192.168.126.1:9000/的路径会被映射到index.html
			index index.html;           
        }		
        
        location ~ ^/(hryfilefront) {
			proxy_pass http://192.168.126.1:9000;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host;
		}
		
        location ~ ^/(hryfile) {
            proxy_pass http://192.168.126.1:9000;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }


    server {
        listen       80;
        server_name  manage.abc.com ;
        charset utf-8;

        location ~ ^/(manage) {
            proxy_pass http://192.168.126.1:9002;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
		location ~ ^/(hryfile) {
            proxy_pass http://192.168.126.1:9002;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location ~ ^/(oauth) {
            proxy_pass http://192.168.126.1:9001;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
		location ~ ^/(hryfilefront) {
			proxy_pass http://192.168.126.1:9002;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host;
		}

		location ~ ^/(hryfile) {
			proxy_pass http://192.168.126.1:9002;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host;
		}
				  
		location ~ ^/(admin) {
			root /usr/share/nginx/html/admin;
			index  index.html;
		}
    }
	
	server {
        listen       80;
        server_name  hq.abc.com ;
        charset utf-8;

        location / {
            proxy_pass http://192.168.126.1.25:3000;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }		
	}


}

安装命令解析

docker pull nginx:1.12.2
docker run -itd --restart=unless-stopped -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -p $1:80:80 --name nginx -v /data/yjs/nginx/html:/usr/share/nginx/html -v /data/yjs/nginx/logs:/var/log/nginx -v /data/yjs/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx:1.12.2

解析后:

#拉取版本1.12.2的nginx
docker pull nginx:1.12.2   
#-i: 以交互模式运行容器,通常与 -t 同时使用;
#-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
#-d: 后台运行容器,并返回容器ID;
#通过--restart选项,可以设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器。
#unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
docker run -itd --restart=unless-stopped  
# 同步时区
-v /etc/localtime:/etc/localtime 
-v /etc/timezone:/etc/timezone 
#开放端口,并映射到本地的 80 端口。
-p $1:80:80 --name nginx 
#挂载到绝对路径下
-v /data/yjs/nginx/html:/usr/share/nginx/html 
-v /data/yjs/nginx/logs:/var/log/nginx 
-v /data/yjs/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx:1.12.2

参考资源路径:

nginx add_header指令使用方法

https://www.jb51.net/article/47681.htm

nginx proxy_set_header设置、自定义header

https://blog.csdn.net/bao19901210/article/details/52537279

nginx location正则写法

https://www.cnblogs.com/IPYQ/p/7889399.html

nginx配置文件nginx.conf超详细讲解

https://www.cnblogs.com/liang-wei/p/5849771.html

注意事项:

  • 配置路径要为绝对路径
  • 上面的域名要想可以访问,要使用域名信息备案过的域名方可

以上是关于Nginx 配置解析的主要内容,如果未能解决你的问题,请参考以下文章

Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段

Nginx配置文件详细介绍

Nginx防盗链访问控制 解析php相关配置及Nginx代理

Nginx防盗链Nginx访问控制Nginx解析php相关配置Nginx代理

Nginx 跨域

Nginx 模块自主开发六:源码剖析配置文件解析过程