Home Database Mysql Tutorial How to record user id in mysql using nginx access log?

How to record user id in mysql using nginx access log?

Jul 21, 2017 pm 04:32 PM
mysql use how

This article mainly introduces you to the relevant information about how to use nginx access logs to record user IDs in mysql. The article introduces it in great detail through sample code. It has certain reference learning value for everyone's study or work. It is needed Friends, please follow the editor to learn together.

Preface

Everyone should know that nginx has a very powerful logging function, but by default, it can only log users IP address and browser information. If we have a user log in to the registration system, and the user is already logged in, we want to record which user visited a certain web page, what should we do? Because we not only want to know which IP address visited which webpage, but also which logged-in user visited which webpage. This will help us recommend information and even push advertisements to him/her in a targeted manner in the future. All are very useful. Without further ado, let’s take a look at the detailed introduction:

nginx default log format


127.0.0.1 - - [20/Jul/2017:22:04:08 +0800] "GET /news/index HTTP/1.1" 200 22262 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.66 Safari/537.36"
Copy after login

Here, we see that although the user has logged in, there is no user-related information in the log, only the IP address. What if we want to record the user's ID and other information?

Output a special header on the PHP side

We thought that since the user has logged in, it must have a cookie or session Or token information, no matter which way, our PHP can effectively obtain the user's information. Here is an example where we obtain the user's ID information through session:


$user_id = Yii::$app->session['user_id'];
if (empty($user_id)) {
 header('X-UID: 0');
} else {
 header('X-UID: ' . $user_id);
}
Copy after login

If there is no user ID in the session, it means that the user has not logged in, and X-UID: 0 is output. (Or you can simply output nothing). If the session is obtained, it means that the user has logged in, then we output his user_id to nginx: X-UID: 12345.

Here, you can not only output one piece of information, you can output several different fields, including his name, gender, age, etc.

Create a new log format

log_format can only be stored in the http segment, so we need to find nginx. conf file.

The second part of the default log format of nginx is user information, but usually there is nothing, just a -. Here we transform it into the header information we pass in from the backend. The special header we created above is X-UID. Here we need to do a small conversion first, change all the uppercase letters to lowercase, change all the - to underscores, it becomes x_uid, and then splice # in front. ##$upstream_http_, you will get the final result $upstream_http_x_uid, and then insert it into the log format wherever you want it to appear:


log_format front '$remote_addr - $upstream_http_x_uid [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
Copy after login

Refer to this log format in the server

In the server-related settings, because we named the log format above front, so when we quote it here, we need to specify the front log format:


access_log /var/log/nginx/front-access.log front;
Copy after login

New log result


127.0.0.1 - 52248 [20/Jul/2017:22:35:40 +0800] "GET /news/view?id=56 HTTP/1.1" 200 19455 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.66 Safari/537.36"
Copy after login

Note: The second number above is 52248, which is the personal ID of our logged-in user. My example here is relatively simple. If you don't mind the trouble, you can even print all the personal information of the logged-in user, including mobile phone number and email address, in the log. It depends on whether you are concerned about security issues.

Hide the ID from the user

In the first step above, we used PHP to output a special header. Originally, our The header is only for consumption by nginx, but this header will be displayed to the front end intact by nginx, which may make careful users feel uneasy. For this reason, we can add a small switch to the nginx server settings to hide this header:


proxy_hide_header X-UID;
Copy after login
so that users cannot see this special feature from the browser. header without affecting nginx recording it.

Final processing

So what’s the use of us spending so much effort to record an ID? This is of great use. Everyone knows that we have a powerful tool for log analysis, logstash, which can be used to analyze and process Apache or nginx logs when combined with the ELK component. If we don't have this ID information, at most we can only analyze which web pages are frequently visited by users, and that's it. But now that we have user IDs, we can even connect to the mysql database table for analysis to study which age group, which gender, or which city users like to visit which web pages, and even understand a specific one in a targeted manner Users, what web pages they like to visit at what time period, and then provide them with customized services in a targeted manner. Isn't this powerful enough?

Summarize

The above is the detailed content of How to record user id in mysql using nginx access log?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MySQL: Simple Concepts for Easy Learning MySQL: Simple Concepts for Easy Learning Apr 10, 2025 am 09:29 AM

MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

How to open phpmyadmin How to open phpmyadmin Apr 10, 2025 pm 10:51 PM

You can open phpMyAdmin through the following steps: 1. Log in to the website control panel; 2. Find and click the phpMyAdmin icon; 3. Enter MySQL credentials; 4. Click "Login".

MySQL: An Introduction to the World's Most Popular Database MySQL: An Introduction to the World's Most Popular Database Apr 12, 2025 am 12:18 AM

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

How to use single threaded redis How to use single threaded redis Apr 10, 2025 pm 07:12 PM

Redis uses a single threaded architecture to provide high performance, simplicity, and consistency. It utilizes I/O multiplexing, event loops, non-blocking I/O, and shared memory to improve concurrency, but with limitations of concurrency limitations, single point of failure, and unsuitable for write-intensive workloads.

Why Use MySQL? Benefits and Advantages Why Use MySQL? Benefits and Advantages Apr 12, 2025 am 12:17 AM

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

MySQL's Place: Databases and Programming MySQL's Place: Databases and Programming Apr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

MySQL and SQL: Essential Skills for Developers MySQL and SQL: Essential Skills for Developers Apr 10, 2025 am 09:30 AM

MySQL and SQL are essential skills for developers. 1.MySQL is an open source relational database management system, and SQL is the standard language used to manage and operate databases. 2.MySQL supports multiple storage engines through efficient data storage and retrieval functions, and SQL completes complex data operations through simple statements. 3. Examples of usage include basic queries and advanced queries, such as filtering and sorting by condition. 4. Common errors include syntax errors and performance issues, which can be optimized by checking SQL statements and using EXPLAIN commands. 5. Performance optimization techniques include using indexes, avoiding full table scanning, optimizing JOIN operations and improving code readability.

Monitor Redis Droplet with Redis Exporter Service Monitor Redis Droplet with Redis Exporter Service Apr 10, 2025 pm 01:36 PM

Effective monitoring of Redis databases is critical to maintaining optimal performance, identifying potential bottlenecks, and ensuring overall system reliability. Redis Exporter Service is a powerful utility designed to monitor Redis databases using Prometheus. This tutorial will guide you through the complete setup and configuration of Redis Exporter Service, ensuring you seamlessly build monitoring solutions. By studying this tutorial, you will achieve fully operational monitoring settings

See all articles