nginx配置文件结构

Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的。每个block一般以一个大括号“{”来表示。block可以分为几个层次,整个配置文件中Main命令位于最高层,在Main层下面可以有Events、 HTTP等层级,而在HTTP层中又包含Server层,即server block,
Nginx 配置文件 域名反向代理以及静态资源部署 - 图1
这里监听是是80端口,是nginx的默认端口,在配置文件中就添加proxypass配置,修改server_name后面的值为,保存,重启nginx让配置生效,浏览器打开输入服务器ip就会跳转到到百度首页。这就是简单的反向代理实现。 接下来打开nginx的配置文件nginx.conf,修改配置如下 保存退出,重启nginx,用在浏览器用服务器ip或者绑定的域名就可访问,dist文件下的index.html是不可以直接用浏览器打开访问的

Nginx 服务的基本配置项详解

我的本机nginx配置文件路径是 /usr/local/nginx/conf/ 这个目录下面,其中nginx.conf是主配置文件。Nginx.conf配置文件主要分成四个部分:
main (全局设置) 。
sever (主机设置)。
upstram负载均街服务器设置。
location(URL匹配特定位置的设置)。
说明
main部分设置的命令将影响其他所有设置。 server 部分的命令主要用于指定主机和端口;。upstream命令主要用于负载均衡,设置一系列的后端服务器。 location 部分用于匹配网页位置。这四者之间的关系式server继承main, location 继承server, upstream 既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干命令,这些命令主要包含Nginx的主模块命令,事件模块命令,HTTP核心模块命令,同时每个部分还可以使用其他HTTP模块命令(例如HTTP SSL模块,HttpGzip Static模块和Http Addition模块等)。
下面通过一个Nginx配置实例详细介绍nginx.conf每个命令的含义。

  1. #user nobody;
  2. worker_processes 1;
  3. #error_log logs/error.log;
  4. #error_log logs/error.log notice;
  5. #error_log logs/error.log info;
  6. #pid logs/nginx.pid;
  7. events {
  8. use epoll;
  9. worker_connections 1024;
  10. }
  11. /*
  12. 以上这块配置代码是对nginx全局属性的配置。
  13. user :主模块命令, 指定Nginx的worker进程运行用户以及用户组,默认由nobody账号运行。
  14. worker processes: 指定Nginx要开启的进程数。
  15. error log:用来定义全局错设日志文件的路径和日志名称。日志输出级别有debug,info,notice,warn,error,crit 可供选择,其中debug输出日志最为详细,面crit输出日志最少。
  16. pid: 用来指定进程id的存储文件位置。
  17. event:设定nginx的工作模式及连接数上限,其中参数use用来指定nginx的工作模式(这里是epoll,epoll是多路复用IO(I/O Multiplexing)中的一种方式),nginx支持的工作模式有select ,poll,kqueue,epoll,rtsig,/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,对于linux系统,epoll是首选。
  18. worker_connection是设置nginx每个进程最大的连接数,默认是1024,所以nginx最大的连接数max_client=worker_processes * worker_connections。进程最大连接数受到系统最大打开文件数的限制,需要设置ulimit。
  19. */
  20. #下面部分是nginx对http服务器相关属性的设置
  21. http {
  22. include mime.types; 主模块命令,对配置文件所包含文件的设定,减少主配置文件的复杂度,相当于把部分设置放在别的地方,然后在包含进来,保持主配置文件的简洁
  23. default_type application/octet-stream; 默认文件类型,当文件类型未定义时候就使用这类设置的。
  24. #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 指定nginx日志的格式
  25. # '$status $body_bytes_sent "$http_referer" '
  26. # '"$http_user_agent" "$http_x_forwarded_for"';
  27. #access_log logs/access.log main;
  28. sendfile on; 开启高效文件传输模式(zero copy 方式),避免内核缓冲区数据和用户缓冲区数据之间的拷贝。
  29. #tcp_nopush on;
  30. #keepalive_timeout 0; 客户端连接超时时间
  31. keepalive_timeout 65;
  32. #gzip on; 设置是否开启gzip模块
  33. #server段是虚拟主机的配置 这里可以写在别的文件中 然后在包含进来,比如写在/usr/local/nginx/vhost/xxx.conf 目录某文件中 然后在包含进来,可以包含多个文件 include /usr/local/nginx/vhost/*;
  34. server {
  35. listen 80; 虚拟主机的服务端口
  36. server_name localhost; 用来指定ip或者域名,多个域名用逗号分开
  37. #charset koi8-r;
  38. #access_log logs/host.access.log main;
  39. location / { 地址匹配设置,支持正则匹配,也支持条件匹配,这里是默认请求地址,用户可以location命令对nginx进行动态和静态网页过滤处理
  40. root html; 虚拟主机的网页根目录
  41. index index.html index.htm; 默认访问首页文件
  42. }
  43. #error_page 404 /404.html;
  44. # redirect server error pages to the static page /50x.html
  45. #
  46. error_page 500 502 503 504 /50x.html;
  47. location = /50x.html {
  48. root html;
  49. }
  50. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  51. #
  52. location ~ \.php$ { 将以php为后缀的文件转发到 FastCGI处理. 使用FastCGI默认配置。本地8088端口处理
  53. fastcgi_pass http://127.0.0.1:8088;
  54. fastcgi_index index.php;
  55. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  56. include fastcgi_params;
  57. }
  58. #静态文件,nginx自己处理
  59. location ~ ^/(images|javascript|js|css|flash|media|static)/ {
  60. root /var/www/public/images;
  61. expires 30d; #缓存时间30天,静态文件更新不多,过期时间可以设大一点。
  62. }
  63. #配置Nginx状态的地址
  64. location /NginxStatus {
  65. stub_status on;
  66. access_log on;
  67. auth_basic "NginxStatus";
  68. auth_basic_user_file conf/htpasswd;
  69. }
  70. #配置nginx负载均衡的服务器列表
  71. upstream mysvr {
  72. #weigth参数表示权值,权值越高被分配到的几率越大
  73. #本机上的Squid开启3128端口
  74. server 192.168.199.1:88 weight=5;
  75. server 192.168.199.1:80 weight=1;
  76. }
  77. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  78. #
  79. #location ~ \.php$ {
  80. # root html;
  81. # fastcgi_pass 127.0.0.1:9000;
  82. # fastcgi_index index.php;
  83. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  84. # include fastcgi_params;
  85. #}
  86. # deny access to .htaccess files, if Apache's document root
  87. # concurs with nginx's one
  88. #
  89. #location ~ /\.ht {
  90. # deny all;
  91. #}
  92. }
  93. #端口转发 (晚点补上...)
  94. # another virtual host using mix of IP-, name-, and port-based configuration
  95. #
  96. #server {
  97. # listen 8000;
  98. # listen somename:8080;
  99. # server_name somename alias another.alias;
  100. # location / {
  101. # root html;
  102. # index index.html index.htm;
  103. # }
  104. #}
  105. # HTTPS server
  106. #
  107. #server {
  108. # listen 443 ssl;
  109. # server_name localhost;
  110. # ssl_certificate cert.pem;
  111. # ssl_certificate_key cert.key;
  112. # ssl_session_cache shared:SSL:1m;
  113. # ssl_session_timeout 5m;
  114. # ssl_ciphers HIGH:!aNULL:!MD5;
  115. # ssl_prefer_server_ciphers on;
  116. # location / {
  117. # root html;
  118. # index index.html index.htm;
  119. # }
  120. #}
  121. }

现在来实践一下
Nginx 配置文件 域名反向代理以及静态资源部署 - 图2

负载均衡

接着如下配置就可以是一个简单的负载均衡,默认是轮询策略,即将请求平分到每台服务器
Nginx 配置文件 域名反向代理以及静态资源部署 - 图3

部署vue项目

将打包好的vue的dist目录复制到/home/myblog目录下
Nginx 配置文件 域名反向代理以及静态资源部署 - 图4
Nginx 配置文件 域名反向代理以及静态资源部署 - 图5

转载:https://juejin.cn/post/6844903957500788743