Nginx 常用的基础配置(前端相关方面)

news/发布时间2024/9/20 9:31:20

在这里插入图片描述

Nginx是一款高性能的Web服务器和反向代理服务器,广泛应用于互联网领域。作为一名前端同学,了解并掌握Nginx的配置是非常有必要的。

安装Nginx

sudo apt-get update
sudo apt-get install nginx

查看Nginx版本

nginx -v

启动、停止、重启Nginx服务

sudo service nginx start      # 启动Nginx服务
sudo service nginx stop       # 停止Nginx服务
sudo service nginx restart    # 重启Nginx服务

Nginx配置文件结构
Nginx的主配置文件位于/etc/nginx/nginx.conf,其他配置文件位于/etc/nginx/sites-available目录下。每个站点的配置文件以站点名命名,如default、example.com等。
在这里插入图片描述

server {listen 80;          # 监听端口号server_name example.com; # 域名或IP地址root /var/www/html; # 网站根目录index index.html;   # 默认首页文件名
}

创建站点配置文件
在/etc/nginx/sites-available目录下创建一个名为example.com的文件,并将上述配置内容复制到该文件中。然后创建一个符号链接到/etc/nginx/sites-enabled目录下:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

重启Nginx服务使配置生效

sudo service nginx restart

至此,你已经成功配置了一个基本的Nginx站点。当然,Nginx还有很多高级功能,如负载均衡、缓存、SSL等,可以根据需要进行配置。

Nginx配置示例

基础配置:

user                            root;
worker_processes                1;events {worker_connections            10240;
}http {log_format                    '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';include                       mime.types;default_type                  application/octet-stream;sendfile                      on;#autoindex                    on;#autoindex_exact_size         off;autoindex_localtime           on;keepalive_timeout             65;gzip                          on;gzip_disable                  "msie6";gzip_min_length               100;gzip_buffers                  4 16k;gzip_comp_level               1;gzip_types                  text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_types                    "*";gzip_vary                     off;server_tokens                 off;client_max_body_size          200m;server {listen                      80 default_server;server_name                 _;return                      403 /www/403/index.html;}include                       ../serve/*.conf;
}

隐藏 Nginx 版本信息:

http {server_tokens         off;
}

禁止ip直接访问80端口

server {listen                80 default;server_name           _;return                500;
}

启动 web 服务 (vue 项目为例)

server {# 项目启动端口listen            80;# 域名(localhost)server_name       _;# 禁止 iframe 嵌套add_header        X-Frame-Options SAMEORIGIN;# 访问地址 根路径配置location / {# 项目目录root 	    html;# 默认读取文件index           index.html;# 配置 history 模式的刷新空白try_files       $uri $uri/ /index.html;}# 后缀匹配,解决静态资源找不到问题location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { root           html/static/;}# 图片防盗链location ~/static/.*\.(jpg|jpeg|png|gif|webp)$ {root              html;valid_referers    *.deeruby.com;if ($invalid_referer) {return          403;}}# 访问限制location /static {root               html;# allow 允许allow              39.xxx.xxx.xxx;# deny  拒绝deny               all;}
}

PC端和移动端使用不同的项目文件映射

server {......location / {root /home/static/pc;if ($http_user_agent ~* '(mobile|android|iphone|ipad|phone)') {root /home/static/mobile;}index index.html;}
}

一个web服务,配置多个项目 (location 匹配路由区别)

server {listen                80;server_name           _;# 主应用location / {root          html/main;index               index.html;try_files           $uri $uri/ /index.html;}# 子应用一location ^~ /store/ {proxy_pass          http://localhost:8001;proxy_redirect      off;proxy_set_header    Host $host;proxy_set_header    X-Real-IP $remote_addr;proxy_set_header    X-Forwarded-Forproxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;}# 子应用二location ^~ /school/ {proxy_pass          http://localhost:8002;proxy_redirect      off;proxy_set_header    Host $host;proxy_set_header    X-Real-IP $remote_addr;proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;}# 静态资源读取不到问题处理rewrite ^/api/profile/(.*)$ /(替换成正确路径的文件的上一层目录)/$1 last;
}# 子应用一服务
server {listen                8001;server_name           _;location / {root          html/store;index               index.html;try_files           $uri $uri/ /index.html;}location ^~ /store/ {alias               html/store/;index               index.html index.htm;try_files           $uri /store/index.html;}# 接口代理location  /api {proxy_pass          http://localhost:8089;}
}# 子应用二服务
server {listen                8002;server_name           _;location / {root          html/school;index               index.html;try_files           $uri $uri/ /index.html;}location ^~ /school/ {alias               html/school/;index               index.html index.htm;try_files           $uri /school/index.html;}# 接口代理location  /api {proxy_pass          http://localhost:10010;}
}

配置负载均衡

upstream my_upstream {server                http://localhost:9001;server                http://localhost:9002;server                http://localhost:9003;
}server {listen                9000;server_name           test.com;location / {proxy_pass          my_upstream;proxy_set_header    Host $proxy_host;proxy_set_header    X-Real-IP $remote_addr;proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;}
}

SSL 配置 HTTPS

server {listen                      80;server_name                 www.xxx.com;# 将 http 重定向转移到 httpsreturn 301 https://$server_name$request_uri;
}server {listen                      443 ssl;server_name                 www.xxx.com;ssl_certificate             /etc/nginx/ssl/www.xxx.com.pem;ssl_certificate_key         /etc/nginx/ssl/www.xxx.com.key;ssl_session_timeout         10m;ssl_ciphers                 ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers   on;location / {root                    /project/xxx;index                   index.html index.htm index.md;try_files               $uri $uri/ /index.html;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/QZKn/9523.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

HTTPS 原理和常见面试题及解析

在互联网安全领域,HTTPS 是一个非常重要的协议,也是很多技术岗位面试中经常涉及的话题。下面我们来看一些关于 HTTPS 的常见面试题及答案解析。 ## 1. 什么是 HTTPS? **答案:** HTTPS 是 Hypertext Transfer Protocol Secure&am…

如何使用Docker部署IT-Tools并结合内网穿透实现公网访问本地工具箱服务

作为程序员,在日常工作中,需要借助一些工具来提高我们工作效率,IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能,使开发者能以更高效方式完成任务。经由IT-Tools,开发人员能轻松应对各类技术挑战&…

创新之巅 健康之选 森歌集成灶智能水洗新揭秘

2024年2月27日,一场引领智能厨电风潮的盛会在杭州隆重召开。森歌集成灶以“勠力同心 共生共歌”为主题,成功举办了2024森歌智能厨电优秀经销商峰会。此次峰会上,森歌集成灶发布了令人瞩目的奥运冠军同款智能厨电新品——森歌鲸洗小灶Z60&…

JavaWeb之 创建 Web项目,使用Tomcat 部署项目,使用 Maven 构建Web项目(一万八千字详解)

目录 前言3.1 Tomcat 简介3.1.1 什么是 Web服务器3.1.2 Tomcat 是什么3.1.3 小结 3.2 Tomcat 的基本使用3.2.1 下载 Tomcat3.2.2 安装 Tomcat3.2.3 卸载 Tomcat3.2.4 启动 Tomcat3.2.5 关闭 Tomcat3.2.6 配置 Tomcat3.2.7 在 Tomcat 中部署 Web项目 3.3 在 IDEA 中创建 Web 项目…

stm32——hal库学习笔记(IIC)

一、IIC总线协议介绍(掌握) 二、AT24C02介绍(了解) 三、AT24C02读写时序(掌握) 四、AT24C02驱动步骤(掌握) 五、编程实战(掌握) myiic.c #include "./B…

MATLAB环境下基于稀疏最大谐波噪声比反卷积的信号处理方法

状态监测与故障诊断是保障机械设备安全、稳定运行的基础。滚动轴承是旋转机械的核心部件,其服役性能直接影响整台设备的运行安全。在测试的振动信号中,周期性冲击是滚动轴承发生故障的重要标志。因此,如何从振动信号中提取出与故障相关的周期…

对el-table表格的表头操作

效果1:单层表头合并 图示1: 说明: header-cell-style函数用于给表头添加样式,其返回的值会被添加到表头对应样式中去注意函数的形参中的column.id为单元格的class类大家最好打印一下,结合审查dom看类名 代码&#x…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统,虚拟机版本为VMware Workstation 16 pro,Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

uniapp生成app包引导用户开启通知权限和热更新

uniapp生成app包引导用户开启通知权限和热更新 引导用户开启通知权限 export function setPermissions() {// #ifdef APP-PLUS if (plus.os.name Android) {var main plus.android.runtimeMainActivity();var pkName main.getPackageName();var uid main.getApplicationI…

React Vite 构建工具如何查看代码占用体积

首先安装 Vite 中的 rollup-plugin-visualizer 插件 cnpm install rollup-plugin-visualizer 接着在你的 vite.config.ts 中引入并且使用到 plugins 中 import { visualizer } from "rollup-plugin-visualizer";export default defineConfig({plugins: [react(),vi…

【k8s 访问控制--认证与鉴权】

1、身份认证与权限 前面我们在操作k8s的所有请求都是通过https的方式进行请求,通过REST协议操作我们的k8s接口,所以在k8s中有一套认证和鉴权的资源。 Kubenetes中提供了良好的多租户认证管理机制,如RBAC、ServiceAccount还有各种策路等。通…

最新IE跳转Edge浏览器解决办法(2024.2.29)

最新IE跳转Edge浏览器解决办法(2024.2.29) 1.前言2. 解决方案2.1.创建快捷方式2.2.效果 3. 遗留问题 1.前言 在前几天我发布过一个关于使用卸载补丁从而解决最新的IE跳转Edge浏览器的解决方案。   但是这个方案其实存在一个BUG,例如我昨天重…

【算法 - 动态规划】找零钱问题Ⅲ

在前面的动态规划系列文章中,关于如何对递归进行分析的四种基本模型都介绍完了,再来回顾一下: 从左到右模型 :arr[index ...] 从 index 之前的不用考虑,只考虑后面的该如何选择 。范围尝试模型 :思考 [L ,…

React入门之React_使用es5和es6语法渲染和添加class

React入门 //react的核心库 <script src"https://cdn.jsdelivr.net/npm/react17/umd/react.development.js"></script> //react操作dom的核心库&#xff0c;类似于jquery <script src"https://cdn.jsdelivr.net/npm/react-dom17/umd/react-dom.…

程序媛的mac修炼手册-- 2024如何彻底卸载Python

啊&#xff0c;前段时间因为想尝试chatgpt的API&#xff0c;需要先创建一个python虚拟环境来安装OpenAI Python library. 结果&#xff0c;不出意外的出意外了&#xff0c;安装好OpenAI Python library后&#xff0c;因为身份认证问题&#xff0c;根本就没有获取API key的权限…

Linux:进度条的实现

使用工具的简单介绍&#xff1a; 在创建进度条之前&#xff0c;首先要明白两个工具&#xff0c;fflush 和 \r 。 \r 回车键的功能其实是两个&#xff0c;一个是换行&#xff0c;一个是回车。所谓换行就是将光标从这一行变到下一行中&#xff0c;且是垂直下落&#xff0c…

CCF-A类 实时系统研究顶会RTSS‘24 5月23日截稿!引领技术新风暴!

会议之眼 快讯 第45届RTSS (IEEE Real-Time Systems Symposium)即实时系统研讨会将于 2024 年 12月10日 -13日在英国约克举行&#xff01;RTSS作为实时系统领域的首要盛会&#xff0c;为研究人员和从业人员提供了展示全方位创新的平台&#xff0c;涵盖了理论、设计、分析、实施…

1 数据分析概述与职业操守

1、 EDIT数字化模型 E——exploration探索 &#xff08;是什么&#xff09; 业务运行探索&#xff1a;探索关注企业各项业务的运行状态、各项指标是否合规以及各项业务的具体数据情况等。 指标体系——目标&#xff08;O&#xff09;、策略&#xff08;S&#xff09;、指标&a…

android开发书籍推荐,android面试复习

笼统来说&#xff0c;中年程序员容易被淘汰的原因其实不外乎三点。 1、输出能力已到顶点。这个人奋斗十来年了&#xff0c;依旧碌碌无为&#xff0c;很明显这人的天花板就这样了&#xff0c;说白了&#xff0c;天赋就这样。 2、适应能力越来越差。年纪大&#xff0c;有家庭&…

开工大吉,接单助你!

新年的气息逐渐散去&#xff0c;打工人重返岗位&#xff0c;开启新一年的搬砖&#xff01; 虽说&#xff0c;个个都叫嚷着“这个班是非上不可不可嘛&#xff1f;&#xff01;”但不少人新年的第一条朋友圈却是“开工大吉”。好吧&#xff0c; 在生活和金钱的威逼利诱下&#…
推荐文章