【Web】Nginx:静态网站摆设

曹旭辉  金牌会员 | 2024-11-17 04:47:26 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 965|帖子 965|积分 2895

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Nginx 是一个HTTP和反向代理服务器,邮件代理服务器,以及一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写。很长一段时间以来,它一直在很多负载较重的俄罗斯网站上运行,包罗Yandex、Mail.Ru、VK和Rambler。根据Netcraft的数据,在2024年5月,nginx为或代理了20.42% 最繁忙的站点。以下是一些成功案例:Dropbox、Netflix、FastMail.FM
  安装Nginx

起首,确保体系包是最新的:
  1. #本文操作环境为Ubuntu
  2. sudo apt update
  3. sudo apt upgrade
复制代码
利用以下下令安装Nginx:
  1. sudo apt install nginx
复制代码
安装完成后,启动Nginx并使其开机主动启动:
  1. sudo systemctl start nginx
  2. sudo systemctl enable nginx
  3. # 禁止自启动:sudo systemctl disable nginx
复制代码
检察端口占用环境:
  1. netstat -lntup  # 可以看到nginx默认占用了80端口
复制代码
Nginx常用下令

启动Nginx:
进入Nginx的安装目录,并利用 ./nginx 启动Nginx:
  1. cd /usr/local/nginx/sbin/
  2. ./nginx
复制代码
停止Nginx:
利用 -s stop 参数立刻停止Nginx:
  1. ./nginx -s stop
复制代码
安全退出Nginx:
利用 -s quit 参数安全退出Nginx,等候所有工作进程处置惩罚完当前请求后再退出:
  1. ./nginx -s quit
复制代码
重新加载设置文件:
利用 -s reload 参数重新加载Nginx设置文件而无需停止服务:
  1. ./nginx -s reload
复制代码
检察Nginx进程:
利用 ps 下令检察Nginx进程:
  1. ps aux | grep nginx
复制代码
设置文件语法检查:
在应用新的设置文件之前,利用以下下令测试设置文件的语法:
  1. ./nginx -t
复制代码
检察Nginx版本:
检察Nginx的版本信息和编译设置:
  1. ./nginx -v
复制代码
检查Nginx的当前状态:
检查Nginx的当前状态和活动状态:
  1. sudo systemctl status nginx
复制代码
启动、停止和重启Nginx(利用systemd):
假如Nginx是通过包管理器(如apt或yum)安装的,可以利用systemd管理服务:
  1. # 启动Nginx
  2. sudo systemctl start nginx
  3. # 停止Nginx
  4. sudo systemctl stop nginx
  5. # 重启Nginx
  6. sudo systemctl restart nginx
  7. # 重新加载配置文件
  8. sudo systemctl reload nginx
复制代码
创建网站目录和页面

起首,创建目录结构来存放你的网站文件:
  1. sudo mkdir -p /var/www/my_website
  2. sudo mkdir -p /var/www/my_website/about
  3. sudo mkdir -p /var/www/my_website/contact
复制代码
然后创建首页、关于页面和联系页面的HTML文件:
  1. sudo vi /var/www/my_website/index.html
复制代码
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>My Personal Website</title>
  5. </head>
  6. <body>
  7.     <h1>Welcome to My Personal Website</h1>
  8.     <p>This is the home page.</p>
  9.     <nav>
  10.         <a href="/about/">About</a>
  11.         <a href="/contact/">Contact</a>
  12.     </nav>
  13. </body>
  14. </html>
复制代码
  1. sudo vi /var/www/my_website/about/index.html
复制代码
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>About - My Personal Website</title>
  5. </head>
  6. <body>
  7.     <h1>About Me</h1>
  8.     <p>This is the about page.</p>
  9.     <nav>
  10.         <a href="/">Home</a>
  11.         <a href="/contact/">Contact</a>
  12.     </nav>
  13. </body>
  14. </html>
复制代码
  1. sudo vi /var/www/my_website/contact/index.html
复制代码
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Contact - My Personal Website</title>
  5. </head>
  6. <body>
  7.     <h1>Contact Me</h1>
  8.     <p>This is the contact page.</p>
  9.     <nav>
  10.         <a href="/">Home</a>
  11.         <a href="/about/">About</a>
  12.     </nav>
  13. </body>
  14. </html>
复制代码
设置Nginx

创建一个新的Nginx服务器块设置文件来设置你的网站:
   Nginx服务器块(Server Block)用于定义一个虚拟主机的设置,每个服务器块可以设置差别的域名、端口、根目录等。服务器块在Nginx设置文件中用 server 指令来定义。
  1. sudo vi /etc/nginx/sites-available/my_website
复制代码
在该文件中添加以下内容:
  1. server {
  2.     # 监听端口,通常是80(HTTP)或443(HTTPS)。这里指定服务器监听80端口,用于处理HTTP请求。
  3.     listen 80;  
  4.    
  5.     # 定义服务器的域名。当请求的域名与此匹配时,将使用这个服务器块处理请求。
  6.     server_name my_website.com www.my_website.com;
  7.    
  8.     # 指定网站的根目录,所有相对路径的文件请求都将从这个目录开始查找。
  9.     root /var/www/my_website;
  10.    
  11.     # 定义默认的首页文件名。当用户请求根目录时,如果该文件存在,将返回该文件。
  12.     index index.html;
  13.     location / {# 尝试按照顺序查找文件:首先是请求的URI,如果不存在,则尝试添加斜杠查找目录,如果仍不存在,则返回404错误。
  14.         try_files $uri $uri/ =404;
  15.     }
  16. }
复制代码
启用设置并加载Nginx

Nginx利用 sites-available 和 sites-enabled 目录来管理和构造虚拟主机设置文件:


  • /etc/nginx/sites-available/:存放所有可用的站点设置文件。这些设置文件可以被启用或禁用。
  • /etc/nginx/sites-enabled/:存放已启用站点设置文件的符号链接。Nginx在启动时会读取并加载这个目录下的设置文件。
检察现在的的符号链接:
  1. sudo ls /etc/nginx/sites-enabled/
复制代码
存在名为 default 的符号链接,删除它:
  1. sudo rm /etc/nginx/sites-enabled/default
复制代码
通过创建一个符号链接将设置文件链接到 sites-enabled 目录中:
  1. sudo ln -s /etc/nginx/sites-available/my_website /etc/nginx/sites-enabled/
复制代码
在重新加载Nginx之前,确保设置文件没有语法错误:
  1. sudo nginx -t
复制代码
假如测试通过,重新加载Nginx以应用新的设置:
  1. sudo systemctl reload nginx
复制代码
Nginx设置文件*

Nginx的默认设置文件(通常位于 /etc/nginx/nginx.conf)包罗了基本的设置选项:
  1. # 用户和组
  2. user www-data;
  3. # Nginx 进程数
  4. worker_processes auto;
  5. # 进程 ID 文件的位置
  6. pid /run/nginx.pid;
  7. # 包含模块的配置文件
  8. include /etc/nginx/modules-enabled/*.conf;
  9. # 事件模块配置
  10. events {
  11.     # 每个 worker 进程的最大连接数
  12.     worker_connections 768;
  13.     # multi_accept on; # 是否同时接收多个新连接
  14. }
  15. # HTTP 核心模块配置
  16. http {
  17.     ##
  18.     # 基本设置
  19.     ##
  20.    
  21.     # 使用 sendfile 来提升文件传输效率
  22.     sendfile on;
  23.     # 启用 TCP_NOPUSH 以优化 TCP 数据包的发送
  24.     tcp_nopush on;
  25.     # 设置 types 哈希表的最大尺寸
  26.     types_hash_max_size 2048;
  27.     # server_tokens off; # 隐藏 Nginx 版本号以提升安全性
  28.     # server_names_hash_bucket_size 64; # 调整 server_names 哈希表桶大小
  29.     # server_name_in_redirect off; # 禁用在重定向中使用服务器名
  30.     # 包含 MIME 类型定义
  31.     include /etc/nginx/mime.types;
  32.     # 默认 MIME 类型
  33.     default_type application/octet-stream;
  34.     ##
  35.     # SSL 设置
  36.     ##
  37.    
  38.     # 支持的 SSL/TLS 协议
  39.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # 禁用 SSLv3,参考 POODLE 漏洞
  40.     # 优先使用服务器端的密码套件
  41.     ssl_prefer_server_ciphers on;
  42.     ##
  43.     # 日志设置
  44.     ##
  45.     # 访问日志的位置
  46.     access_log /var/log/nginx/access.log;
  47.     # 错误日志的位置
  48.     error_log /var/log/nginx/error.log;
  49.     ##
  50.     # Gzip 设置
  51.     ##
  52.    
  53.     # 启用 Gzip 压缩
  54.     gzip on;
  55.     # gzip_vary on; # 启用响应头 `Vary: Accept-Encoding`
  56.     # gzip_proxied any; # 启用对任何请求的压缩
  57.     # gzip_comp_level 6; # Gzip 压缩级别
  58.     # gzip_buffers 16 8k; # Gzip 缓冲区
  59.     # gzip_http_version 1.1; # Gzip 最低 HTTP 版本要求
  60.     # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 需要压缩的 MIME 类型
  61.     ##
  62.     # 虚拟主机配置
  63.     ##
  64.    
  65.     # 包含其他配置文件
  66.     include /etc/nginx/conf.d/*.conf;
  67.     include /etc/nginx/sites-enabled/*;
  68. }
  69. # 邮件代理模块配置示例(默认注释掉)
  70. # mail {
  71. #     # 参考样例验证脚本:http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
  72. #
  73. #     # 验证脚本的地址
  74. #     # auth_http localhost/auth.php;
  75. #
  76. #     # POP3 协议的功能支持
  77. #     # pop3_capabilities "TOP" "USER";
  78. #
  79. #     # IMAP 协议的功能支持
  80. #     # imap_capabilities "IMAP4rev1" "UIDPLUS";
  81. #
  82. #     server {
  83. #         listen     localhost:110;
  84. #         protocol   pop3;
  85. #         proxy      on;
  86. #     }
  87. #
  88. #     server {
  89. #         listen     localhost:143;
  90. #         protocol   imap;
  91. #         proxy      on;
  92. #     }
  93. # }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表