Ubuntu20.04安装配置Nginx
创始人
2025-01-21 02:36:40
0

由于在学习配置时,网上的教程比较杂乱,用时很久才做好一些基础配置,把流程记录一下方便和我一样的小白学习

本文写于2023.2.10,如果间隔太久,下述内容可能会失效,请另寻教程

仅包含基础教程,个人服务未涉及到负载均衡

  • 安装nginx
  • 配置静态服务器
  • 配置端口转发
  • 配置域名
  • 配置https

服务器: 阿里云ubuntu20.04

nginx版本: nginx/1.18.0 (Ubuntu)

1. 安装nginx

1.1 安装及常用命令
# 更新apt-get源 sudo apt-get update # 安装 sudo apt-get install nginx # 安装后将自动开启nginx服务,打开浏览器输入ip即可查看初始页面 
# 查看安装版本 nginx -v # 输出:nginx version: nginx/1.18.0 (Ubuntu) 
# systemctl命令 # 查看状态 sudo systemctl status nginx # 启动 sudo systemctl start nginx # 停止 sudo systemctl stop nginx # 重启 sudo systemctl restart nginx 

注意:对nginx配置文件修改之后,都要重启nginx服务,加载修改后的配置文件

1.2 文件结构
# 查看文件结构 tree /etc/nginx 
/etc/nginx ├── conf.d ├── fastcgi.conf ├── fastcgi_params ├── koi-utf ├── koi-win ├── mime.types ├── modules-available ├── modules-enabled │   ├── 50-mod-http-image-filter.conf -> /usr/share/nginx/modules-available/mod-http-image-filter.conf │   ├── 50-mod-http-xslt-filter.conf -> /usr/share/nginx/modules-available/mod-http-xslt-filter.conf │   ├── 50-mod-mail.conf -> /usr/share/nginx/modules-available/mod-mail.conf │   └── 50-mod-stream.conf -> /usr/share/nginx/modules-available/mod-stream.conf ├── nginx.conf ├── proxy_params ├── scgi_params ├── sites-available │   └── default ├── sites-enabled │   └── default -> /etc/nginx/sites-available/default ├── snippets │   ├── fastcgi-php.conf │   └── snakeoil.conf ├── uwsgi_params └── win-utf 
1.3 配置文件内容

nginx.conf (为了方便看,我删掉了初始内容中所有带注释的代码)

user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf;  events { 	worker_connections 768; }  http {  	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;  	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE 	ssl_prefer_server_ciphers on;  	access_log /var/log/nginx/access.log; 	error_log /var/log/nginx/error.log;  	gzip on;  	include /etc/nginx/conf.d/*.conf; 	include /etc/nginx/sites-enabled/*; } 

最关键的是下面两行引入,上面的代码含义目前我还没研究,用到再说

include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; 

这两行的意思是:从conf.d中加载所有后缀为conf的文件,从sites-enabled中加载所有文件,均作为配置文件

sites-enabled文件我用不习惯,因此我注释掉了这行,使用conf.d做配置文件

在conf.d中添加static.conf

server {     listen       80;     server_name  localhost;      charset utf-8; # 防止中文显示出现乱码      #access_log  logs/host.access.log  main;      location / {         root   /var/www/html; # 你的静态资源路径         index  index.html index.htm;# 访问的文件为html, htm     } } 

要注意的是,在/var/www/html目录中,文件的名字不是index.html,原名为index.nginx.debian.html,改成前者即可。

通过三处修改,完成从sites-enableconf.d的迁移

  • nginx.conf中注释掉include /etc/nginx/sites-enabled/*;
  • conf.d目录下新建static.conf,添加如上文件内容
  • 修改/var/www/html目录中的文件名为index.html
# 检查配置文件是否有误 nginx -t # nginx: the configuration file /etc/nginx/nginx.conf syntax is ok # nginx: configuration file /etc/nginx/nginx.conf test is successful  # 重启服务 sudo systemctl restart nginx 

2. 配置静态服务器

自行寻找一个网页做测试,上传到/var/www/html

我上传了之前写过的一个markdown在线编辑器,是一个文件夹,文件夹名为markdown

开始修改static.conf文件

server {     listen       80;     server_name  localhost;      charset utf-8; # 防止中文显示出现乱码      # 根据自己需要配置日志文件,可以单独配置,也可以全部放在/var/log/nginx的日志中     #access_log  logs/host.access.log  main;      location / {         root   /var/www/html; # 你的静态资源路径         index  index.html index.htm;# 访问的文件为html, htm     }          location /markdown {         alias   /var/www/html/markdown; # 你的静态资源路径         index  index.html index.htm;# 访问的文件为html, htm     }          # 后续如果有其他配置,模仿markdown的配置添加即可     # location /example {     #     alias   /var/www/html/example; # 你的静态资源路径     #     index  index.html index.htm;# 访问的文件为html, htm     # } } 

对于多个路径的配置: [1]

  • 使用root会将location后的markdown追加在路径的尾部,在访问时就会访问到/var/www/html/markdown/markdown

  • 使用alias则不会将location后的markdown追加在路径尾部,访问时就为正确路径/var/www/html/markdown

如果添加charset utf-8;后还存在乱码,强制刷新一下试试

输入IP/markdown查看配置结果

3. 配置端口转发

自行寻找一个服务做测试,开在非80端口即可,我开在了8822端口

注:要在服务器的安全组配置,打开对应端口

首先测试一下 IP:8822 能不能正常使用,可以使用说明服务成功启动在8822端口,进行后续配置。

server {     listen       80;     server_name  localhost;       charset utf-8; # 防止中文显示出现乱码  	# 添加头部信息     proxy_set_header  Cookie $http_cookie;     proxy_set_header  X-Forwarded-Host $Host;     proxy_set_header  proxy_set_Server  $Host;     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 	     # 访问IP/eat,则会自动访问对应地址IP:8822     location /eat/ {         proxy_pass http://localhost:8822/;     }          # 后续如果有其他配置,模仿eat的配置添加即可     # 访问IP/example,则会自动访问对应地址IP:port     # location /example/ {     #     proxy_pass http://localhost:port/;     # } } 

输入IP/eat查看配置结果

4. 配置域名

我从阿里云购买了域名southyang.cn,将子域名demo.southyang.cn解析到服务器上

以端口转发为例:

server {     listen       80;     server_name  demo.southyang.cn;       charset utf-8; # 防止中文显示出现乱码  	# 添加头部信息     proxy_set_header  Cookie $http_cookie;     proxy_set_header  X-Forwarded-Host $Host;     proxy_set_header  proxy_set_Server  $Host;     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 	     # 访问demo.southyang.cn/eat,则会自动访问对应地址IP:8822     location /eat/ {         proxy_pass http://localhost:8822/;     }          # 后续如果有其他配置,模仿eat的配置添加即可     # 访问IP/example,则会自动访问对应地址IP:port     # location /example/ {     #     proxy_pass http://localhost:port/;     # } } 

输入demo.southyang.cn/eat查看配置结果

5. 配置https

以端口转发为例: [2]

server {     listen 80;     server_name demo.southyang.cn;     # 跳转https     return 301 https://$host$request_uri; }  server {     listen 443   ssl http2;     server_name  demo.southyang.cn;       charset utf-8; # 防止中文显示出现乱码  	# 添加头部信息     proxy_set_header  Cookie $http_cookie;     proxy_set_header  X-Forwarded-Host $Host;     proxy_set_header  proxy_set_Server  $Host;     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;          # 配置证书     ssl_certificate 证书密钥地址     ssl_certificate_key 证书公钥地址     ssl_verify_client off;     proxy_ssl_verify off; 	     # 访问demo.southyang.cn/eat,则会自动访问对应地址IP:8822     location /eat/ {         proxy_pass http://localhost:8822/;         proxy_redirect off;     }          # 后续如果有其他配置,模仿eat的配置添加即可     # 访问IP/example,则会自动访问对应地址IP:port     # location /example/ {     #     proxy_pass http://localhost:port/;     # } } 

输入demo.southyang.cn/eat查看配置结果

注: 目前我只用到了上述所列的内容,其他内容用到了再学

引用内容:

[1] https://blog.csdn.net/qq_39827677/article/details/113745095

[2] https://github.com/Mereithhh/van-nav

相关内容

热门资讯

黑科技挂(德扑ai助手)外挂透... 黑科技挂(德扑ai助手)外挂透明挂辅助教程(透视)果然有挂(黑科技脚本)-哔哩哔哩1、每一步都需要思...
黑科技线上(wpkai辅助)外... 黑科技线上(wpkai辅助)外挂黑科技辅助技巧(透视)原来存在有挂(黑科技介绍)-哔哩哔哩;1、任何...
黑科技免费(wpk有赢的吗)外... 黑科技免费(wpk有赢的吗)外挂黑科技辅助安装(透视)一贯有挂(黑科技攻略)-哔哩哔哩1、这是跨平台...
黑科技辅助挂(德扑之星ai代打... 黑科技辅助挂(德扑之星ai代打)外挂透明挂辅助app(透视)本来是真的有挂(黑科技方法)-哔哩哔哩1...
黑科技总结(德州之星有机器人吗... 黑科技总结(德州之星有机器人吗)外挂黑科技辅助安装(透视)切实存在有挂(黑科技方法)-哔哩哔哩德州之...
黑科技软件(Wpk辅助器)外挂... 黑科技软件(Wpk辅助器)外挂透明挂辅助技巧(透视)原来是有挂(黑科技教程)-哔哩哔哩1、许多玩家不...
黑科技辅助(Wepoke透明挂... 黑科技辅助(Wepoke透明挂)外挂黑科技辅助器(透视)确实真的是有挂(黑科技工具)-哔哩哔哩Wep...
黑科技辅助挂(微扑克辅助器io... 黑科技辅助挂(微扑克辅助器ios)外挂黑科技辅助软件(透视)一直有挂(黑科技黑科技)-哔哩哔哩1、全...
黑科技线上(wepoke模拟器... 黑科技线上(wepoke模拟器)外挂透视辅助安装(透视)原来有挂(黑科技规律)-哔哩哔哩1、超多福利...
黑科技总结(aapoker有假... 黑科技总结(aapoker有假吗)外挂透视辅助软件(透视)果然是有挂(黑科技解密)-哔哩哔哩1、让任...