Setting up SFTP with Nginx: Difference between revisions

From LemonWiki共筆
Jump to navigation Jump to search
mNo edit summary
No edit summary
 
Line 1: Line 1:


= Nginx Directory Permissions and Symbolic Link Configuration Guide =
Nginx Directory Permissions and Symbolic Link Configuration Guide




Line 19: Line 19:
# Verify Symbolic Link
# Verify Symbolic Link


<syntaxhighlight lang="bash"># Check if symbolic link is correct
<pre lang="bash"># Check if symbolic link is correct
ls -l /home/your_user/public_folder</syntaxhighlight>
ls -l /home/your_user/public_folder</pre>
Expected output:
Expected output:


Line 52: Line 52:
}</pre>
}</pre>
<span id="common-issues"></span>
<span id="common-issues"></span>
== Common Issues: ==
== Troubleshooting of Common Issues ==


* Specific directories return 404 (files exist)
* Specific directories return 404 (files exist)
Line 58: Line 58:
* Nginx error log shows permission issues
* Nginx error log shows permission issues


== Solution: Adjust Permission Settings ==
=== Solution: Adjust Permission Settings ===


# Check Nginx Error Log
# Check Nginx Error Log
Line 82: Line 82:
chmod 644 /usr/share/nginx/html/folder/your_file.png</pre>
chmod 644 /usr/share/nginx/html/folder/your_file.png</pre>
<span id="permission-details"></span>
<span id="permission-details"></span>
== Permission Details ==
 
=== Permission Details ===


* <code>chmod 755</code> (directories):
* <code>chmod 755</code> (directories):
Line 93: Line 94:
** Others: read (r–)
** Others: read (r–)


== Testing and Verification ==
=== Testing and Verification ===


<ol style="list-style-type: decimal;">
<ol style="list-style-type: decimal;">
Line 101: Line 102:
sudo systemctl reload nginx</pre></li></ol>
sudo systemctl reload nginx</pre></li></ol>


== Important Notes ==
=== Important Notes ===


# Permission changes take effect immediately, no nginx restart needed
# Permission changes take effect immediately, no nginx restart needed

Latest revision as of 14:12, 18 April 2025

Nginx Directory Permissions and Symbolic Link Configuration Guide


Environment Overview[edit]

  • Using SFTP to upload files to personal directory
  • Personal directory linked to website root via symbolic link
  • Files accessible through public web URL after upload

Example SFTP Upload Process[edit]

  1. Upload file to personal directory: /home/your_user/public_folder/
  2. File automatically reflects in website directory: /usr/share/nginx/html/folder/
  3. Access via URL: http://your_domain/folder/file.png

Configuration Steps[edit]

  1. Verify Symbolic Link
# Check if symbolic link is correct
ls -l /home/your_user/public_folder

Expected output:

lrwxrwxrwx 1 your_user your_user 26 Jan 20 15:00 /home/your_user/public_folder -> /usr/share/nginx/html/folder
  1. Check Directory Structure and Permissions
# Check website root directory
sudo ls -lht /usr/share/nginx/html/
# Check target directory
sudo ls -lht /usr/share/nginx/html/folder/
  1. Check Nginx Configuration
# Check nginx config
sudo nano /etc/nginx/nginx.conf
# Or check site config
sudo nano /etc/nginx/sites-available/default

Basic nginx configuration should include:

server {
    listen 80;
    server_name your_domain;

    root /usr/share/nginx/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Troubleshooting of Common Issues[edit]

  • Specific directories return 404 (files exist)
  • Files uploaded via SFTP not accessible via web
  • Nginx error log shows permission issues

Solution: Adjust Permission Settings[edit]

  1. Check Nginx Error Log
sudo tail /var/log/nginx/error.log

Possible error message:

[crit] stat() "[path]/file.png" failed (13: Permission denied)
  1. Set User Directory Permissions
# Ensure user directory is accessible
sudo chmod 755 /home/your_user
  1. Set Website Directory Permissions
# Ensure website directory is accessible
sudo chmod 755 /home/your_user/public_folder
  1. (optional) Set File Permissions
# Set file read permissions
chmod 644 /usr/share/nginx/html/folder/your_file.png

Permission Details[edit]

  • chmod 755 (directories):
    • Owner: read, write, execute (rwx)
    • Group: read and execute (r-x)
    • Others: read and execute (r-x)
  • chmod 644 (files):
    • Owner: read, write (rw-)
    • Group: read (r–)
    • Others: read (r–)

Testing and Verification[edit]

  1. Public URL format: http://your_domain/folder/file.png

  2. If still inaccessible after configuration:

    # Reload nginx configuration
    sudo systemctl reload nginx

Important Notes[edit]

  1. Permission changes take effect immediately, no nginx restart needed
  2. Entire path needs proper execute permissions
  3. New files need correct permissions set
  4. Ensure symbolic links remain intact
  5. Verify files are uploaded to correct location