Install and configure a Nginx Server on Linux for a website
1. Install Nginx
$ sudo apt-get update
Install Nginx
On Ubuntu:
$ sudo apt-get install nginx
Note: If the system generates an error about the lock file, please see How To Fix Could Not Get Lock /Var/Lib/Dpkg/Lock Error for suggestions.
On CentOS and Red Hat:
$ yum install nginx
$ nginx -v
Start by checking the status of the Nginx service:
$ sudo systemctl status nginx
If the status displays active (running), Nginx has already been
started. Press Ctrl + z to exit the status display.
If Nginx is not running, use the following command to launch the Nginx service:
$ sudo systemctl start nginx
To set Nginx to load when the system starts, enter the following:
$ sudo systemctl enable nginx
To stop the Nginx service, enter the following:
$ sudo systemctl stop nginx
To prevent Nginx from loading when the system boots:
$ sudo systemctl disable nginx
To reload the Nginx service (used to apply configuration changes):
$ sudo systemctl reload nginx
For a hard restart of Nginx:
$ sudo systemctl restart nginx
Check syntax Nginx config file:
$ sudo nginx -t
Test Nginx from local:
Make sure that the Nginx service is running, as in Step 4. Open a web
browser, and navigate to the following web address:
http://127.0.0.1
or
http://localhost
Allow Nginx Traffic
Nginx needs access through the system’s firewall. To do this, Nginx
installs a set of profiles for the Ubuntu default
ufw (UnComplicated Firewall).
Method 1
Start by displaying the available Nginx profiles: $ sudo ufw app list To grant Nginx access through the default Ubuntu firewall, enter the following: $ sudo ufw allow 'nginx http' Refresh the firewall settings by entering: $ sudo ufw reload For encrypted (https) traffic, enter: $ sudo ufw allow 'nginx https' To allow both http and https, enter: $ sudo ufw allow 'nginx full'
Method 2: Open port 80 and 443 using UFW on Ubuntu Linux (firewall config)
UFW
is an acronym for uncomplicated firewall. It is used for managing a Linux
firewall and aims to provide an easy to use interface for the user. To
open port 80 (HTTP) and HTTPS (443), run:
$ sudo ufw allow https comment 'Open all to access Nginx port 443' $ sudo ufw allow http comment 'Open access Nginx port 80' $ sudo ufw allow ssh comment 'Open access OpenSSH port 22' $ sudo ufw enable Verify it: $ sudo ufw status Result: Status: active To Action From -- ------ ---- Nginx HTTP ALLOW Anywhere 443 ALLOW Anywhere # Open all to access Nginx port 443 80 ALLOW Anywhere # Open access Nginx port 80 22 ALLOW Anywhere # Open access OpenSSH port 22 Nginx HTTP (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) # Open all to access Nginx port 443 80 (v6) ALLOW Anywhere (v6) # Open access Nginx port 80 22 (v6) ALLOW Anywhere (v6) # Open access OpenSSH port 22
Method 3: Open port 80 and 443 using firewall-cmd on CentOS / RHEL / Fedora
$ sudo firewall-cmd --permanent --zone=public --add-service=http $ sudo firewall-cmd --permanent --zone=public --add-service=https $ sudo firewall-cmd --reload Verify that port 80 or 443 opened using ss command: $ sudo ss -tulpn $ sudo systemctl enable nginx
Test Nginx
Find out your Ubuntu Linux server IP address: Commands to find ip address $ ip addr show $ ifconfig $ hostname -I ==> Open a web browser and type the IP address to test Nginx The default Nginx page indicates that the Ubuntu and Nginx server is running fine on your system.
2. Configure Nginx Server
- In Nginx, a server block is a configuration that works as its own server. By default, Nginx has one server block preconfigured.
- It is located at /var/www/html. However, it can be configured with multiple server blocks for different sites.
- Khi sử dụng Nginx, bạn có thể sử dụng server blocks riêng cho từng website giúp cho việc quản lý cấu hình được dễ dàng hơn.
nginx
kiểu system
với thư mục
home là /var/www
để thực thi Nginx
$ sudo adduser --system --home=/var/www --disabled-login --disabled-password --group nginx
Notes:
-
Use command:
man adduser
oradduser --help
to understand more aboutadduser
command. -
Type
id nginx
to check nginx whether created or not. -
disabled-login
để ngăn ngừa đăng nhập bằng user này. disabled-password
để loại bỏ password.
$ sudo mkdir -p /var/www/test_domain.com/html
CHMOD/CHOWN trên Linux Gán quyền sở hữu thư mục/var/www/test_domain.com
cho user nginx $ sudo chown –R nginx:nginx /var/www/test_domain.com Để đảm bảo thư mục test_domain.com của bạn được phân quyền chính xác hãy sử dụng lệnh sau: $ sudo chmod –R 755 /var/www/test_domain.com Quyền 755 trên folder tương ứng vớidrwxr-xr-x
có nghĩa là user sở hữu folder có full quyền, group sở hữu folder có quyền đọc và thực thi, other cũng có quyền đọc và thực thi.
$ sudo nano /var/www/test_domain.com/html/index.html
In the text editor, enter any HTML code and save it.
$ sudo nano /etc/nginx/sites-available/test_domain.com.conf
Enter the following code:
server {
listen 80;
listen [::]:80;
server_name test_domain.com www.test_domain.com;
root /var/www/test_domain.com/html;
index index.html;
access_log /var/www/test_domain.com/access.log;
error_log /var/www/test_domain.com/error.log;
location / {
try_files $uri $uri/ =404;
}
}
Notes:
- listen 80: Lắng nghe và nhận các kết nối trên cổng 80 (HTTP Port)
- listen [::]:80: Tương tự nhưng cho địa chỉ IPv6
- server_name: Địa chỉ tên miền cho website
- root: Đường đẫn thư mục chứa source code website
- index: File sẽ gọi đến đầu tiên khi User vào website
- access_log: Đường dẫn đến file log truy cập
- error_log: Đường dẫn đến file log lỗi
- location: Cách trả về tài nguyên trên máy chủ, khi có request tới 1 URL
- try_files: Cố gắng phục vụ các tập tin được chỉ rõ (các tham số từ 1 đến N-1 trong chỉ thị), nếu không có tập tin nào tồn tại, nhảy đến khối location được khai báo (tham số cuối cùng trong chỉ thị - ví dụ trên là 404) hoặc phục vụ 1 URI được chỉ định.
$ sudo ln –s /etc/nginx/sites-available/test_domain.com.conf /etc/nginx/sites-enabled/test_domain.com.conf
Notes:
-
Cài đặt Nginx có thể cho nhiều hơn một trang web và các tệp xác định
máy chủ. Các trang web của bạn nằm trong thư mục
/etc/nginx/sites-available
. -
Thư mục
sites-available
bao gồm các cấu hình cho virtual hosts. Điều này cho phép máy chủ web được cấu hình cho nhiều trang web có cấu hình đặc biệt. Các trang web trong thư mục này không hoạt động và chỉ được bật nếu chúng ta tạo một sumbolic link vào thư mục/etc/nginx/sites-enabled
. - Có thể thay thế
Step 5, 6
bằng cách tạo file virtual host cho test_domain.com trong thư mục/etc/nginx/conf.d
:$ sudo nano /etc/nginx/conf.d/test_domain.com.conf
$ sudo nginx -t
If there are no errors, the output will look like this:
Output
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
If you’re using a test domain name that isn’t registered or public, the
/etc/hosts file may need to be modified to display the
test_domain.com page.
-
Display the system’s IP address with the following command:
$ hostname -i
-
Next, open /etc/hosts for editing:
$ sudo nano /etc/hosts
-
In an empty space just below the localhost information, add the
following line (nhớ sử dụng phím
Tab
thay vì phím cách) and save:127.0.1.1 test_domain.com www.test_domain.comTips: You can use IP address from 127.0.1.1 to 127.0.1.255.Notes: Bạn có thể truy cập test_domain.com từ browser trên window bằng cách:
-
Thay đổi
root
trong file/etc/nginx/sites-available/default
từroot /var/www/html;
thànhroot /var/www/test_domain.com/html;
và lưu lại. -
Trỏ IP trong file
hosts
của window để có thể phân giải tên miềntest_domain.com
:Mở file hosts theo đường dẫn:
C:\Windows\System32\drivers\etc\hosts
Thêm phân giải tên miền theo cấu trúcIP (IP của máy linux server) + Dấu cách + tên website của bạn và lưu lại:
192.168.1.6 test_domain.com ================ Đây cũng là cách để chặn trang web ========== 127.0.0.1 google.com
-
Thay đổi
Step 5, 6
bằng cách tạo file virtual host cho test_domain.com trong thư mục /etc/nginx/conf.d
:
$ sudo nano /etc/nginx/conf.d/test_domain.com.conf
Open a browser window and navigate to test_domain.com (or the domain name
you configured in Nginx). You should see the message you entered in Part 3.
Những điều quan trong khi configure Nginx
Important Nginx File Locations
By default, Nginx stores different configuration and log files in the
following locations:
/var/www/html
– Website content as seen by visitors.-
/etc/nginx
– Location of the main Nginx application files. -
/etc/nginx/nginx.conf
– The main Nginx configuration file. -
/etc/nginx/sites-available
– List of all websites configured through Nginx. -
/etc/nginx/sites-enabled
– List of websites actively being served by Nginx. -
/var/log/nginx/access.log
– Access logs tracking every request to your server. -
/var/log/ngins/error.log
– A log of any errors generated in Nginx.
Verify that Nginx ports are open on Ubuntu Linux with the ss command or
netstat command
$ ss -tulpn $ ss -tulpn | grep :80 $ netstat -tulpn
Reference:
Tags:
nginx